This should all be possible. Complicated, but possible. I can't write up an example of this right now, but the general premise would be: checkboxes for each point on the grid, as you thought a controller attribute for each grid point that will store the name(s) of systems occupying that point (this will be used for the display and sheetworker interaction) Then probably use CSS grid with the grid based on the controller attributes above. This may need some finagling to handle the tetris like shapes a sheetworker to handle clicking on a grid point. Will have several broad possible responses to a click on a grid point If no system is actively selected and the grid point is empty, create a new system block with fields for name and any other useful info. Set this new system to the active system (probably another attribute to store the currently active system; could also be done with a block scoped variable in JS, although that has other issues) If a system is actively selected, the grid point selected is contiguous with the area of that system, and the grid point is unassigned assign the grid point to the actively selected system. If the point is already assigned to another system, show a popup to confirm reassignment/removal of space. if no system is selected, and the grid point is assigned, make the system at that grid point the actively selected system. The big problem here is actually the display. My suggestion in 2 & 3 is sort of the Jet Airliner over farmland view of how it would work, but that is going to be the biggest problem.