improve copyNote, shelfMark, move hashable to function