start removing Factory
remove factory entirely
accept a closure as a template spec