Refactor transfer to create or update transfer item on the fly