maybe this doesn't have to be global