added tests based on Language Reference, added runtime, support for attributes, many refactorings