Seperate state and results into concerns
Actually select valid moves. :)
Merge branch 'move_selection'