refactored delegates out to own file