Type Checking: 1. Type checking of mappers. I started to work on this, but there are many things to be discussed first. The basic idea is to treat mappers as functions/procedures with input and output parameters, then make signatures for the mappers and finally in compiler level do the type checking the same way it is done with functions/procedures. Type Inference: 1. Inference is currently done only in expressions and assignments. It should be done for procedure (and function) arguments. One idea is to do it similarly like variable types: variable StringTemplate is not being added until type of that variable is known. StringTemplate objects are kept in a map in VariableScope object. Similiar approach could be used for procedures - StringTemplate of the procedure isn't added until we know the types of all arguments. There might be a better way to do this. 2. Field types for structered types can be inferred using similar approach as described above, but I am not sure is this desirable behaviour at all.