fix field initialization hack

- add a more generic approach to field initialization
- fix module initialization to support new approach
- remove old field initialization hack
- fix module tests
remove completed todos