refactor(put) func -> callback