add upgrade functionality