more testing needed, but decl, assign, expr appear to work