changed map to map strings to function pointers that create a new expression