Preprocessor changes

- change api
- simplify preprocessors calls by backing all functions with Dyn*Array
- add some simple unit tests