now with support for any and all functors

- lambdas
- member functions
- free functions

with some leeway via std::is_convertible