use generator delegation