completed compartmentalizing move method