segregate functions to move forward and to move forward if the target position is available
add unit tests about forward