Add gitignore
Refactoring singleton
Refact doc blocks
Refact