add generator to create migration for version
Use transaction when setting the version, add default version based on max(), allow custom method to be called for version