basic implementation of moves