Use pointers to option structs.

Also added some doc improvements. Fixes #3.
fix handling of nil value within interface