method shuffling to make subclassing cleaner