use pooling and a direct function call instead of generalize update + options hash, see #137