adding singleton pattern
adding adapter pattern