implemented upgrade functionality, user must specify what to upgrade