supermarket kata refactored