Slightly refactored ready for strategy implementation