Reworking for named parameters, base classes, clean up, error messages, etc.