rename shift_and_perform to perform_one