make it easier for people to subclass this and control behaviour of certain phases