initial commit
implement singleton pattern