The overall project quality needs to be improved by:
- Write tests (unittests, integrationtests)
- Write documentation
- Use standard vector libary
- simplify if/guard "let" statements
- implement Equatable for all structs/enums
- revisit all struct-vs-class decisions
- revisit degeneratable protocol