refactor borrow