Final refactoring - Spec