eval works again with the tidied-up protocol functions
all special forms working; need to review the protocols and flesh out all their functions and methods