put everything in a module; add ability to change board size