for borrowing logic