dunno, need to think about all those mode changes