new BoardFactory class which hides the implementation details of the builder, and allows us to throw runtime exceptions from the factory