Here is the updated patch from #25.