use static methods instead of constructors