refactor generics section to use custom types

we now have the `type label :` syntax for custom types so this
  should be used whenever you use a type that is not a builtin.
agreed. i typed a subset of the promises interface because ffffffffff---