grid-based positioning and refactored Level into separate class