easily create typed function with a single signature
Eat your own dog food...
Minor refactoring
Updated docs and examples