just need to filter valid moves for large and implement new utility function