Add some specs
Refactoring
Some refactoring