Final refactored version