Port some of this to use an action class instead of directly using the internals of the project class.