move expiration logic to Shift, convert CommandContainer to use FieldedObject, more commands and handlers, default and nullable attributes for fields, commit rollback on failure