Feature/param refactor

This is in a working state and only requires testing/review. Will run profiling before merging.