added upgrade method