first movement implementation