Milestone 12: implementing the singleton design