Split Factory into smaller methods, rename factory method