Unfortunately this had to be done in the base class so that we can still maintain the walls in a global array. The tradeoffs of better abstractions would be far too costly here than the added 16 bytes to the wall struct.