add the singleton pattern