use delegators and enumerable