WIP: refactor upgrade to be an object instead of static methods