Refactor implementation
Provide first spec