Add new specs and refactoring