has
have
i'm not sure why i was overengineering this function so much, but the code i deleted might still come in handy someday.