It might be good to mark this as final and add some javadocs so that it is obvious that doPrepare is the extension point and not prepare.