adding support for the normal active model dirty fields
some refactoring for clarity