Refactor checkin blocks and actions to use base abstract classes (to centralize and obscure the more complicated code).
Merge remote-tracking branch 'origin/develop' into develop