make evaluat even more general. have to make the print statement weird now