Handling constructors and instantiation through factory methods (Task #5)