Move delegation code into separate object