2014-09-21 implement factory_class