Reading of tokens etc. in extspec.c need to be done more robust. Forward references to constant declarations. Unspecified virtual or formal procedures. Labels to external C procedures is not allowed. Thunks should be separated, and placed in SENT objects. Data-flow analysis with corresponding optimizations: which variables are updated by a procedure. which variables need initialization. which initializations can be removed. which procedures are static, recursive, or quasiparalell. Optimizations: array-indexing. Dimensions, static dope-vectors. multiple use of the &-operator more efficient implementation of program flow between different prefix-levels removal of none-tests. Using features of gcc instead of C's switch-statement. Restructuring genexp and genpar: simplifying EXP trees. Remove BLOCK objects that corespond to blocks that are optimized away. The following gives the following error if SENT object are optimized away, but not the BLOCK-objects: BEGIN CLASS a;; a CLASS b;; INSPECT NEW b WHEN a DO WHEN b DO BEGIN PROCEDURE p;; END; END; Compiling b.sim: "b.sim", line 8: Warning: When A will always be executed, unless NONE. "b.sim", line 9: Warning: When B will never be executed. gcc -g -O2 -c b.c b.sim: In function `main': b.sim:17: label `__l8' used but not defined