support .put(obj, cb)