Added factory base class