- TODO: other types as integer are used
- TODO: init with functions
- TODO: init with expressions
- TODO: init structured types with optional fields
