implement method copy