added ability to define variables. this is getting pretty lispy.