The override points (succeeded, progress) seems to be intermixed with utility methods like postponed and rejected. Consider reordering this module so it's more clear to the subclass writer which methods he's expected/recommended to implement.