Support type annotations.

Closes #138. 
Ew. I suspect this is not symmetric.