Change moveKnight to use monad composition