Put in framework to allow for custom lifecycles