can handle everything except function calls