add delegation pattern