use methods to make more subclass friendly