implement move method