refactored wall code to be more overridable