add pass and upgrade functions