add ->copy
privatize methods