So that: 1. There are no runtime errors 2. There less type annotations needed 3. Less traits and stuff to document