done with expressions, need error checking