change how type T is gleaned from destructors and constructors in case of new syntax add a hell of a lot more examples, update and clean documentation