Strictness annotations

Improves execution time slightly by using Strict state where
appropriate, and strict constructor fields.
Make more fields strict