refactoring v1.5+factory