Make param reading more flexible
Use tagged types for Params and some organization