upgrade functionality