refactoring using delegator
Merge branch 'delegator'