Major refactoring and changes: using proper params objects