+ fixes to support generics
+ automatically wrap functions and function properties in
   guards