Basic implementation of upgrade functionality