implements the singleton design pattern