* splitting upgrade flow * bring back master changes * re-export `Upgrade` * export public methods/procs in derived class * style fixes