Revising the Role to a Template Interface
Added more factories and tests