these conditionals cover different cases, so we probably want to split them off into function calls that return true or false, instead of a long conditional question