Add functor implementation
Merge branch 'add-functor'