dish class refactored