useless or removed
context is now a list rather than a vector, and new elements are added
to the head rather than the tail. This fixes shadowing.
reduced unnecessary type checking