Added iteration and updated expression so that a context can be passed in
Added more tests
Added comments
Using .map for .values