remove logic from constructors to static methods