I did that in cases where it made sense; see AbstractPreAndPostProcessingAuthenticationHandler. Maybe we could inject another abstract class into the hierarchy for additional code reuse.