Revise API
Finish compat-2.0.x

Move common code to superclass