Add rest of data types.
Add lots of comments.