Refactor
Refactor and updated specification
Refactor and updated specification