diff --git a/.classpath b/.classpath
deleted file mode 100644
index 6818152..0000000
--- a/.classpath
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-	
-	
-		
-			
-		
-	
-	
-		
-			
-		
-	
-	
-		
-			
-		
-	
-	
-		
-			
-		
-	
-	
-		
-			
-		
-	
-	
-		
-			
-		
-	
-	
-		
-			
-		
-	
-	
-		
-			
-			
-			
-			
-		
-	
-	
-		
-			
-			
-			
-			
-			
-		
-	
-	
-
diff --git a/.project b/.project
deleted file mode 100644
index 0a71914..0000000
--- a/.project
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-	boppi2
-	
-	
-	
-	
-		
-			org.eclipse.xtext.ui.shared.xtextBuilder
-			
-			
-		
-		
-			org.eclipse.jdt.core.javabuilder
-			
-			
-		
-		
-			org.eclipse.m2e.core.maven2Builder
-			
-			
-		
-	
-	
-		org.eclipse.m2e.core.maven2Nature
-		org.eclipse.jdt.core.javanature
-		org.eclipse.xtext.ui.shared.xtextNature
-	
-
diff --git a/build.xml b/build.xml
index 5d2cb03..6a7e69d 100644
--- a/build.xml
+++ b/build.xml
@@ -1,5 +1,5 @@
 
-
+
 	
 	
 	
@@ -71,7 +71,7 @@
 	
 
 	
-		
+		
 			
 			
 				
@@ -89,7 +89,9 @@
 			
 				
 			
-			
+			
+				
+			
 		
 	
 
@@ -99,32 +101,20 @@
 				
 			
 			
-			
-			
+			
 			
 			
 			
 			
 		
-		
-			
-				
-			
-			
-			
-			
-			
-			
-			
-			
-		
 		
 			
 				
 			
 			
-			
-			
+			
 			
 			
 		
@@ -132,12 +122,14 @@
 
 	
 		
-			
+			
 			
 			
-			
+			
 			
-			
+			
+			 
+			
 		
 	
 
diff --git a/lib/ant-1.10.2.jar b/lib/ant-1.10.2.jar
deleted file mode 100644
index 26a4c3c..0000000
Binary files a/lib/ant-1.10.2.jar and /dev/null differ
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 5abee31..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-  4.0.0
-
-  pp.s1184725.boppi
-  boppi
-  1.0-SNAPSHOT
-  jar
-
-  boppi
-  http://maven.apache.org
-
-  
-    UTF-8
-  
-
-  
-    
-      junit
-      junit
-      3.8.1
-      test
-    
-  
-
diff --git a/src/pp/iloc/Simulator.java b/src/pp/iloc/Simulator.java
index d864a16..3f15a21 100644
--- a/src/pp/iloc/Simulator.java
+++ b/src/pp/iloc/Simulator.java
@@ -13,6 +13,7 @@ import pp.iloc.model.Num;
 import pp.iloc.model.Op;
 import pp.iloc.model.OpClaz;
 import pp.iloc.model.OpCode;
+import pp.iloc.model.Operand.Type;
 import pp.iloc.model.Program;
 import pp.iloc.parse.FormatException;
 
diff --git a/src/pp/s1184725/boppi/BoppiCoreChecker.java b/src/pp/s1184725/boppi/BoppiCoreChecker.java
deleted file mode 100644
index b6a161c..0000000
--- a/src/pp/s1184725/boppi/BoppiCoreChecker.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package pp.s1184725.boppi;
-
-import java.util.logging.Logger;
-import java.util.stream.Collectors;
-
-import org.antlr.runtime.ANTLRFileStream;
-import org.antlr.v4.runtime.CommonTokenStream;
-import org.antlr.v4.runtime.ParserRuleContext;
-import org.antlr.v4.runtime.tree.ParseTree;
-import org.antlr.v4.runtime.tree.ParseTreeWalker;
-
-import pp.s1184725.boppi.antlr.*;
-import pp.s1184725.boppi.antlr.BoppiCoreParser.*;
-import pp.s1184725.boppi.exception.*;
-import pp.s1184725.boppi.type.*;
-
-/**
- * This class performs type checking and variable assignment on a bare parse
- * tree.
- * 
- * @author Frank Wibbelink
- */
-public class BoppiCoreChecker extends BoppiCoreBaseListener {
-    public static void main(String[] args) {
-        BoppiCoreLexer lexer = new BoppiCoreLexer(ToolChain.getCharStream(BoppiCoreChecker.class, "test/test2.core"));
-        BoppiCoreParser parser = new BoppiCoreParser(new CommonTokenStream(lexer));
-        ParseTree ast = parser.program();
-        Logger logger = Logger.getLogger("TEST");
-        Annotations annotations = checkProgram(ast, logger);
-        System.out.println(ToolChain.getAnnotatedDOT(ast, annotations));
-    }
-
-	private Annotations an;
-	private Logger log;
-
-	/**
-	 * Checks and annotates a program. Problems are reported to the given
-	 * logger.
-	 * 
-	 * @param ast
-	 *            the program's AST
-	 * @param logger
-	 *            the logger object to write warnings and errors to
-	 * @return the generated annotations
-	 */
-	public static Annotations checkProgram(ParseTree ast, Logger logger) {
-        BoppiCoreChecker checker = new BoppiCoreChecker(logger, new Annotations());
-        ParseTreeWalker walker = new ParseTreeWalker();
-        walker.walk(checker, ast);
-		return checker.an;
-    }
-
-	protected BoppiCoreChecker(Logger logger, Annotations annotations) {
-		an = annotations;
-		log = logger;
-	}
-
-	/**
-	 * Checks whether two types are compatible and log an error if they do not.
-	 * 
-	 * @param type1
-	 *            the left hand or actual type
-	 * @param type2
-	 *            the right hand or desired type
-	 * @param node
-	 *            the context used for logging
-	 */
-	private void checkConstraint(Type type1, Type type2, ParserRuleContext node) {
-		if (!type2.equals(type1))
-			log.severe(getError(node, Messages.getString("BoppiChecker.0"), type1.toString(), type2.toString())); //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns an error message for a given parse tree node.
-	 * 
-	 * @param ctx
-	 *            the parse tree node at which the error occurred
-	 * @param message
-	 *            the error message
-	 * @param args
-	 *            arguments for the message, see {@link String#format}
-	 */
-	private String getError(ParserRuleContext node, String message, Object... args) {
-		int line = node.getStart().getLine();
-		int column = node.getStart().getCharPositionInLine();
-		return String.format(Messages.getString("BoppiChecker.1"), line, column, String.format(message, args)); //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns whether the current context resides within a given rule context
-	 * within a set root (may be {@code null}). Effectively traverses between
-	 * {@code current} and {@code root} in the parent hierarchy looking for a
-	 * {@code rule} class.
-	 * 
-	 * @param 
-	 *            the rule class
-	 * @param ctx
-	 *            the node to start traversing
-	 * @param root
-	 *            the node to stop traversing
-	 * @param rule
-	 *            the ParserRuleContext class to look for
-	 * @return whether a matching rule is found between the current and root
-	 *         node
-	 */
-	private  boolean isWithinRule(ParserRuleContext ctx, ParserRuleContext root,
-			Class rule) {
-		for (ParserRuleContext node = ctx; node != root && node != null; node = node.getParent())
-			if (node.getClass().isAssignableFrom(rule))
-				return true;
-
-		return false;
-	}
-}
diff --git a/src/pp/s1184725/boppi/antlr/BoppiCore.g4 b/src/pp/s1184725/boppi/antlr/BoppiCore.g4
deleted file mode 100644
index b0063dd..0000000
--- a/src/pp/s1184725/boppi/antlr/BoppiCore.g4
+++ /dev/null
@@ -1,34 +0,0 @@
-grammar BoppiCore;
-import BoppiCoreTokens;
-
-program: expr EOF;
-
-block: BLOCKOPEN ((data|let) DELIM)+ BLOCKCLOSE;
-
-data: DATA id EQUALS BLOCKOPEN (id DELIM)+ BLOCKCLOSE;
-
-let: LET id EQUALS expr;
-
-id: IDENTIFIER (HASTYPE aexpr)?;
-
-expr
-    : expr expr #eApp
-    | LAMBDA id expr #eAbs
-    | PI id expr #eQuant
-    | block expr #eDecl
-    | CASE aexpr BLOCKOPEN (alt DELIM)+ BLOCKCLOSE #eCase
-    | aexpr #eSimple
-    ;
-
-alt: id TO expr;
-
-aexpr
-    : id
-    | literal
-    | PAROPEN expr PARCLOSE
-    ;
-
-literal
-    : LITERALINT
-    | LITERALCHAR
-    ;
diff --git a/src/pp/s1184725/boppi/antlr/BoppiCoreTokens.g4 b/src/pp/s1184725/boppi/antlr/BoppiCoreTokens.g4
deleted file mode 100644
index cbb5aac..0000000
--- a/src/pp/s1184725/boppi/antlr/BoppiCoreTokens.g4
+++ /dev/null
@@ -1,23 +0,0 @@
-lexer grammar BoppiCoreTokens;
-
-DELIM: ';';
-HASTYPE: ':';
-LAMBDA: '\u03BB';
-PI: '\u03A0';
-PAROPEN: '(';
-PARCLOSE: ')';
-DATA: 'data';
-LET: 'let';
-IN: 'in';
-CASE: 'case';
-TO: '\u2192';
-EQUALS: '=';
-BLOCKOPEN: '{';
-BLOCKCLOSE: '}';
-LITERALINT: '0' | [1-9][0-9]*;
-LITERALCHAR: '\'' . '\'';
-
-IDENTIFIER: [\p{Alphabetic}]+ | '_' | '\u2605';
-
-WHITESPACE: [\p{White_Space}] -> skip;
-BLOCKCOMMENT: '/*' .*? '*/' -> skip;
diff --git a/src/pp/s1184725/boppi/test/test1.core b/src/pp/s1184725/boppi/test/test1.core
deleted file mode 100644
index 7813681..0000000
--- a/src/pp/s1184725/boppi/test/test1.core
+++ /dev/null
@@ -1 +0,0 @@
-5
\ No newline at end of file
diff --git a/src/pp/s1184725/boppi/test/test2.core b/src/pp/s1184725/boppi/test/test2.core
deleted file mode 100644
index af5b3b0..0000000
--- a/src/pp/s1184725/boppi/test/test2.core
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-    data Boolean:★ = {
-        True;
-        False;
-    };
-    data List:(Π _:★ ★) = {
-        Cons : (Π a:★ Π _:a Π _:(List a) List a);
-        Nil  : (Π a:★ List a);
-    };
-    let main = True;
-}
-main
\ No newline at end of file
diff --git a/src/pp/s1184725/boppi/type/TypeVar.java b/src/pp/s1184725/boppi/type/TypeVar.java
deleted file mode 100644
index 66439ef..0000000
--- a/src/pp/s1184725/boppi/type/TypeVar.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package pp.s1184725.boppi.type;
-
-/**
- * Type-level variable. 
- * 
- * @author Frank Wibbelink
- *
- */
-public class TypeVar implements Type {
-
-	@Override
-	public int getSize() {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-}
diff --git a/test.boppi.iloc b/test.boppi.iloc
deleted file mode 100644
index c779ef9..0000000
--- a/test.boppi.iloc
+++ /dev/null
@@ -1,532 +0,0 @@
-fst_ptr   <- 0
-slot1     <- 4
-header    <- 8
-off_oref  <- -8
-off_osize <- -4
-off_next  <- 0
-off_size  <- 4
-
-           // memlib - simple memory allocator for ILOC
-           // 
-           // This library maintains a single-linked list (of monotonically increasing addresses) of free
-           // slots in memory and a reference count for occupied slots. Each slot contains a tuple `(next
-           // free slot address,size)` followed by `size` free bytes. The memory is initiliased with a
-           // pointer to the first free slot at `#fst_ptr` and one free slot at `#slot1` of size
-           // `brk-slot1-header`. When a piece of memory is requested for allocation, a tuple
-           // `(reference count, size)` followed by `size` bytes for the object is formed. The calling
-           // convention of the functions in this library consists of pushing the return address followed by
-           // any arguments (in order) to the stack. Any return values will be pushed to the stack likewise.
-           // 
-           // Requires a register `brk` for the highest address available for heap allocation.
-           // Requires an instruction `halt` when memory runs out
-           // 
-           // @author Frank Wibbelink
-           // initialise
-memlib_:   loadI    0              => m_0              
-           loadI    @slot1         => m_1              
-           subI     brk,@slot1     => m_2              
-           subI     m_2,@header    => m_2              
-           storeAI  m_1            => m_0,@fst_ptr     // pointer to first slot
-           storeAI  m_0            => m_1,@off_next    // next slot is null
-           storeAI  m_2            => m_1,@off_size    // first slot size
-           jumpI                   -> ememlib_         
-           // allocate memory
-           // searches through the free slots for either a slot size of ~~exactly #4+8 or a size of~~ at
-           // least #4+16
-           // stack: [return address, object size] -> [object address]
-memalloc:  loadI    0              => m_0              
-           pop                     => m_s              // load size
-           loadI    @fst_ptr       => m_p              // load previous address (base pointer)
-           loadAI   m_p,@off_next  => m_c              // load current address (first slot)
-ma_loop:   cmp_EQ   m_0,m_c        => m_1              // check if address pointer is null
-           cbr      m_1            -> ma_null,ma_cont  // if null, go to end and return null pointer
-ma_cont:   loadAI   m_c,@off_size  => m_1              // load slot size
-           cmp_EQ   m_1,m_s        => m_2              // check if request fits exactly
-           cbr      m_2            -> ma_yxct,ma_nxct  
-ma_nxct:   subI     m_1,@header    => m_1              // subtract free slot size
-           cmp_GE   m_1,m_s        => m_1              // check if request fits
-           cbr      m_1            -> ma_found,ma_next 
-ma_next:   i2i      m_c            => m_p              
-           loadAI   m_p,@off_next  => m_c              
-           jumpI                   -> ma_loop          
-ma_yxct:   loadAI   m_c,@off_next  => m_n              // location of next free slot
-           jumpI                   -> ma_final         
-ma_found:  addI     m_s,@header    => m_1              
-           add      m_1,m_c        => m_n              // location of new free slot
-           loadAI   m_c,@off_size  => m_1              
-           subI     m_1,@header    => m_1              
-           sub      m_1,m_s        => m_1              // size of new free slot
-           storeAI  m_1            => m_n,@off_size    
-           loadAI   m_c,@off_next  => m_1              // location of next free slot
-           storeAI  m_1            => m_n,@off_next    
-ma_final:  storeAI  m_n            => m_p,@off_next    // link previous free slot to new
-           addI     m_c,@header    => m_c              // move to object location
-           loadI    1              => m_1              
-           storeAI  m_1            => m_c,@off_oref    // set reference count to 1
-           storeAI  m_s            => m_c,@off_osize   // set object size
-ma_zerc:   cbr      m_s            -> ma_zerl,ma_null  // zero memory
-ma_zerl:   subI     m_s,1          => m_s              
-           cstoreAO m_0            => m_c,m_s          
-           jumpI                   -> ma_zerc          
-ma_null:   pop                     => m_1              // load return address
-           push     m_c                                // store object address
-           jump                    -> m_1              
-           // increase reference count of object
-           // stack: [return address, object address] -> []
-memaddref: loadI    0              => m_0              
-           pop                     => m_n              // load object address
-           cmp_EQ   m_0,m_n        => m_1              
-           cbr      m_1            -> mr_ynul,mr_nnul  // check if null pointer
-mr_ynul:   haltI    1865445997                         
-mr_nnul:   loadAI   m_n,@off_oref  => m_1              
-           addI     m_1,1          => m_1              
-           storeAI  m_1            => m_n,@off_oref    
-           pop                     => m_1              // load return address
-           jump                    -> m_1              
-           // decrease reference count of object
-           // frees memory if count goes to zero
-           // stack: [return address, object address] -> []
-memfree:   loadI    0              => m_0              
-           pop                     => m_n              // load object address
-           cmp_EQ   m_0,m_n        => m_1              
-           cbr      m_1            -> mf_ynul,mf_nnul  // check if null pointer
-mf_ynul:   haltI    1865442925                         
-mf_nnul:   loadAI   m_n,@off_oref  => m_1              
-           subI     m_1,1          => m_1              
-           cmp_GT   m_1,m_0        => m_2              
-           cbr      m_2            -> mf_exit,mf_free  
-mf_exit:   storeAI  m_1            => m_n,@off_oref    
-           pop                     => m_1              // load return address
-           jump                    -> m_1              
-mf_free:   subI     m_n,@header    => m_n              
-           loadI    @fst_ptr       => m_p              
-           loadAI   m_p,@off_next  => m_c              
-mf_loop:   cmp_EQ   m_0,m_c        => m_1              // loop until the surrounding free blocks are found
-           cbr      m_1            -> mf_halt,mf_cont  // check if address pointer is null
-mf_halt:   haltI    1882220141                         // halt program; object beyond last free slot (or memory corrupted)
-mf_cont:   cmp_EQ   m_c,m_n        => m_1              
-           cbr      m_1            -> mf_hal2,mf_con2  
-mf_hal2:   haltI    1717855853                         // halt program; object is free slot
-mf_con2:   cmp_LE   m_c,m_n        => m_1              
-           cbr      m_1            -> mf_next,mf_done  
-mf_next:   i2i      m_c            => m_p              
-           loadAI   m_p,@off_next  => m_c              
-           jumpI                   -> mf_loop          
-mf_done:   loadAI   m_p,@off_size  => m_1              
-           addI     m_1,@header    => m_1              
-           add      m_1,m_p        => m_2              
-           cmp_EQ   m_2,m_n        => m_2              
-           cbr      m_2            -> mf_yprv,mf_nprv  
-mf_yprv:   loadAI   m_n,@off_size  => m_2              // merge with previous free slot
-           add      m_1,m_2        => m_1              // new size of previous free slot
-           storeAI  m_1            => m_p,@off_size    
-           i2i      m_p            => m_n              
-           jumpI                   -> mf_dprv          
-mf_nprv:   storeAI  m_n            => m_p,@off_next    // link previous free slot with new
-mf_dprv:   loadAI   m_n,@off_size  => m_1              
-           addI     m_1,@header    => m_1              
-           add      m_1,m_n        => m_2              
-           cmp_EQ   m_2,m_c        => m_2              
-           cbr      m_2            -> mf_ynxt,mf_nnxt  
-mf_ynxt:   loadAI   m_c,@off_size  => m_2              // merge with next free slot
-           add      m_1,m_2        => m_1              // new size of next free slot
-           storeAI  m_1            => m_n,@off_size    
-           loadAI   m_c,@off_next  => m_1              
-           storeAI  m_1            => m_n,@off_next    // move link of next's next to new free slot
-           pop                     => m_1              // load return address
-           jump                    -> m_1              
-mf_nnxt:   storeAI  m_c            => m_n,@off_next    // link new free slot with next
-           pop                     => m_1              // load return address
-           jump                    -> m_1              
-           // copy object to location
-           // stack: [return address, object address, destination] -> []
-memcopy:   loadI    0              => m_0              
-           haltI    1835626101                         // unimplemented
-           pop                     => m_1              // load return address
-           jump                    -> m_1              
-ememlib_:  nop                                         
-           // end of memlib
-           // stdlib - generic subroutines for ILOC
-           // 
-           // This library contains a few common subroutines for Boppi.
-           // 
-           // @author Frank Wibbelink
-           // initialise
-stdlib_:   jumpI                   -> estdlib_         
-           // write a boolean to output
-           // stack: [return address, bool] -> []
-stdbout:   pop                     => m_1              // get boolean
-           loadI    0              => m_2              // load zero-length string
-           push     m_2                                
-           cbr      m_1            -> sbout_t,sbout_f  
-sbout_t:   cout     "true"                             
-           jumpI                   -> sbout_e          
-sbout_f:   cout     "false"                            
-sbout_e:   pop                     => m_1              // load return address
-           jump                    -> m_1              
-           // write an array of characters (a string) to output
-           // stack: [return address, address] -> []
-stdsout:   pop                     => m_1              // get address
-           loadAI   m_1,@off_osize => m_2              // get length
-sout_lc:   cbr      m_2            -> sout_ll,sout_le  // check if any character to push
-sout_ll:   subI     m_2,1          => m_2              // iterate backward
-           cloadAO  m_1,m_2        => m_c              // get character
-           cpush    m_c                                // push character
-           jumpI                   -> sout_lc          // repeat
-sout_le:   loadAI   m_1,@off_osize => m_2              // get length
-           push     m_2                                // push string length
-           cout     ""                                 // print string
-           pop                     => m_1              // get return address
-           jump                    -> m_1              
-           // read a character from input
-           // stack: [return address] -> [char]
-stdcin:    cin      ""                                 // get line
-           pop                     => m_1              // get length
-           cbr      m_1            -> scin_t,stdcin    // repeat until at least one character
-scin_t:    cpop                    => m_2              // save character
-scin_lc:   subI     m_1,1          => m_1              // decrement char count
-           cbr      m_1            -> scin_ll,scin_le  
-scin_ll:   cpop                    => m_0              // discard character
-           jumpI                   -> scin_lc          // repeat
-scin_le:   loadI    0              => m_0              // reset zero register
-           pop                     => m_1              // get return address
-           cpush    m_2                                // push result character
-           jump                    -> m_1              
-           // read an array of characters (a string) from input
-           // the memalloc label cannot be used, so address 28 is used instead
-           // stack: [return address] -> [address]
-stdsin:    cin      ""                                 // get line
-           pop                     => m_2              // get length
-           push     m_2                                // save length
-           loadI    #ssin_a        => m_1              // call malloc
-           push     m_1                                // call malloc
-           push     m_2                                // call malloc
-           loadI    28             => m_c              // call malloc
-           jump                    -> m_c              // call malloc
-ssin_a:    pop                     => m_1              // get array address
-           pop                     => m_2              // get length
-           i2i      m_1            => m_n              // load character iterator
-ssin_c:    cbr      m_2            -> ssin_l,ssin_e    // pop characters into the array
-ssin_l:    subI     m_2,1          => m_2              
-           cpop                    => m_c              // pop character
-           cstore   m_c            => m_n              // save character
-           addI     m_n,1          => m_n              // increment iterator
-           jumpI                   -> ssin_c           
-ssin_e:    pop                     => m_2              // get return address
-           push     m_1                                // push array address
-           jump                    -> m_2              
-estdlib_:  nop                                         
-           // end of stdlib
-           loadI    0              => r_nul            // initialise zero register
-           loadI    217            => r_arp            // malloc
-           push     r_arp                              // malloc
-           loadI    28             => r_arp            // malloc
-           push     r_arp                              // malloc
-           jumpI                   -> memalloc         // malloc
-           pop                     => r_arp            // malloc
-           addI     r_arp,16       => r_arp            // construct main AR
-           jumpI                   -> s0               // define f1 - jump over body
-           nop                                         // define f1 - entry point
-           addI     r_arp,0        => r_1              // add offset
-           load     r_1            => r_1              // load address
-           storeAI  r_1            => r_arp,-12        // define f1 - move result
-           loadAI   r_arp,-8       => r_2              // load ref count
-           loadI    1              => r_1              // one
-           cmp_LE   r_2,r_1        => r_2              // check more than one ref
-           cbr      r_2            -> ycl1,ncl2        // remove vars if last reference
-ycl1:      nop                                         // cleanup target
-ncl2:      nop                                         // no cleanup target
-           loadAI   r_arp,-8       => r_1              // define f1 - load return address
-           jump                    -> r_1              // define f1 - go to return address
-s0:        nop                                         // define f1 - skip target
-           loadI    238            => r_1              // malloc
-           push     r_1                                // malloc
-           loadI    12             => r_1              // malloc
-           push     r_1                                // malloc
-           jumpI                   -> memalloc         // malloc
-           pop                     => r_1              // malloc
-           loadI    220            => r_2              // define f1 - load target address
-           storeAI  r_2            => r_1,0            // define f1 - set target address
-           storeAI  r_arp          => r_1,4            // define f1 - copy ARP
-           loadI    20             => r_2              // define f1 - load AR size
-           storeAI  r_2            => r_1,8            // define f1 - set AR size
-           storeAI  r_1            => r_arp,4          // define f1 - set function reference
-           i2i      r_arp          => ART              // AR incRef
-           cmp_NE   ART,r_nul      => r_1              // AR incRef
-           cbr      r_1            -> aril3,arid4      // AR incRef
-aril3:     loadI    253            => r_1              // AR incRef
-           push     r_1                                // AR incRef
-           subI     ART,16         => r_1              // AR incRef
-           push     r_1                                // AR incRef
-           jumpI                   -> memaddref        // AR incRef
-           loadAI   ART,-16        => ART              // AR incRef
-           cmp_NE   ART,r_nul      => r_1              // AR incRef
-           cbr      r_1            -> aril3,arid4      // AR incRef
-arid4:     nop                                         // AR incRef
-           loadI    0              => r_1              // false
-           cbr      r_1            -> if_t5,if_e7      // 
-if_t5:     nop                                         // 
-           addI     r_arp,4        => r_1              // add offset
-           load     r_1            => r_1              // load address
-           loadI    266            => r_3              // memaddref
-           push     r_3                                // memaddref
-           push     r_1                                // memaddref
-           jumpI                   -> memaddref        // memaddref
-           loadAI   r_1,4          => r_2              // add new reference
-           i2i      r_2            => ART              // AR incRef
-           cmp_NE   ART,r_nul      => r_3              // AR incRef
-           cbr      r_3            -> aril8,arid9      // AR incRef
-aril8:     loadI    275            => r_3              // AR incRef
-           push     r_3                                // AR incRef
-           subI     ART,16         => r_3              // AR incRef
-           push     r_3                                // AR incRef
-           jumpI                   -> memaddref        // AR incRef
-           loadAI   ART,-16        => ART              // AR incRef
-           cmp_NE   ART,r_nul      => r_3              // AR incRef
-           cbr      r_3            -> aril8,arid9      // AR incRef
-arid9:     nop                                         // AR incRef
-           addI     r_arp,0        => r_2              // add offset
-           load     r_2            => r_3              // load reference
-           cmp_EQ   r_3,r_nul      => r_4              // remove old reference
-           cbr      r_4            -> ynul10,nnul11    // remove old reference
-nnul11:    nop                                         // remove old reference
-           loadI    288            => r_4              // free
-           push     r_4                                // free
-           push     r_3                                // free
-           jumpI                   -> memfree          // free
-           loadAI   r_3,4          => r_3              // remove old reference
-           i2i      r_3            => ART              // AR decRef
-           cmp_NE   ART,r_nul      => r_4              // AR decRef
-           cbr      r_4            -> ardl12,ardd13    // AR decRef
-ardl12:    loadI    297            => r_4              // AR decRef
-           push     r_4                                // AR decRef
-           subI     ART,16         => r_4              // AR decRef
-           push     r_4                                // AR decRef
-           jumpI                   -> memfree          // AR decRef
-           loadAI   ART,-16        => ART              // AR decRef
-           cmp_NE   ART,r_nul      => r_4              // AR decRef
-           cbr      r_4            -> ardl12,ardd13    // AR decRef
-ardd13:    nop                                         // AR decRef
-ynul10:    nop                                         // remove old reference
-           store    r_1            => r_2              // to f
-           load     r_2            => r_3              // load reference
-           loadI    308            => r_5              // memaddref
-           push     r_5                                // memaddref
-           push     r_3                                // memaddref
-           jumpI                   -> memaddref        // memaddref
-           loadAI   r_3,4          => r_4              // add new reference
-           i2i      r_4            => ART              // AR incRef
-           cmp_NE   ART,r_nul      => r_5              // AR incRef
-           cbr      r_5            -> aril14,arid15    // AR incRef
-aril14:    loadI    317            => r_5              // AR incRef
-           push     r_5                                // AR incRef
-           subI     ART,16         => r_5              // AR incRef
-           push     r_5                                // AR incRef
-           jumpI                   -> memaddref        // AR incRef
-           loadAI   ART,-16        => ART              // AR incRef
-           cmp_NE   ART,r_nul      => r_5              // AR incRef
-           cbr      r_5            -> aril14,arid15    // AR incRef
-arid15:    nop                                         // AR incRef
-           cmp_EQ   r_1,r_nul      => r_3              // remove old reference
-           cbr      r_3            -> ynul16,nnul17    // remove old reference
-nnul17:    nop                                         // remove old reference
-           loadI    328            => r_3              // free
-           push     r_3                                // free
-           push     r_1                                // free
-           jumpI                   -> memfree          // free
-           loadAI   r_1,4          => r_1              // remove old reference
-           i2i      r_1            => ART              // AR decRef
-           cmp_NE   ART,r_nul      => r_3              // AR decRef
-           cbr      r_3            -> ardl18,ardd19    // AR decRef
-ardl18:    loadI    337            => r_3              // AR decRef
-           push     r_3                                // AR decRef
-           subI     ART,16         => r_3              // AR decRef
-           push     r_3                                // AR decRef
-           jumpI                   -> memfree          // AR decRef
-           loadAI   ART,-16        => ART              // AR decRef
-           cmp_NE   ART,r_nul      => r_3              // AR decRef
-           cbr      r_3            -> ardl18,ardd19    // AR decRef
-ardd19:    nop                                         // AR decRef
-ynul16:    nop                                         // remove old reference
-           addI     r_arp,0        => r_4              // add offset
-           load     r_4            => r_4              // load address
-           loadI    348            => r_2              // memaddref
-           push     r_2                                // memaddref
-           push     r_4                                // memaddref
-           jumpI                   -> memaddref        // memaddref
-           loadAI   r_4,4          => r_3              // add new reference
-           i2i      r_3            => ART              // AR incRef
-           cmp_NE   ART,r_nul      => r_2              // AR incRef
-           cbr      r_2            -> aril20,arid21    // AR incRef
-aril20:    loadI    357            => r_2              // AR incRef
-           push     r_2                                // AR incRef
-           subI     ART,16         => r_2              // AR incRef
-           push     r_2                                // AR incRef
-           jumpI                   -> memaddref        // AR incRef
-           loadAI   ART,-16        => ART              // AR incRef
-           cmp_NE   ART,r_nul      => r_2              // AR incRef
-           cbr      r_2            -> aril20,arid21    // AR incRef
-arid21:    nop                                         // AR incRef
-           addI     r_arp,0        => r_2              // add offset
-           load     r_2            => r_1              // load reference
-           cmp_EQ   r_1,r_nul      => r_3              // remove old reference
-           cbr      r_3            -> ynul22,nnul23    // remove old reference
-nnul23:    nop                                         // remove old reference
-           loadI    370            => r_3              // free
-           push     r_3                                // free
-           push     r_1                                // free
-           jumpI                   -> memfree          // free
-           loadAI   r_1,4          => r_1              // remove old reference
-           i2i      r_1            => ART              // AR decRef
-           cmp_NE   ART,r_nul      => r_3              // AR decRef
-           cbr      r_3            -> ardl24,ardd25    // AR decRef
-ardl24:    loadI    379            => r_3              // AR decRef
-           push     r_3                                // AR decRef
-           subI     ART,16         => r_3              // AR decRef
-           push     r_3                                // AR decRef
-           jumpI                   -> memfree          // AR decRef
-           loadAI   ART,-16        => ART              // AR decRef
-           cmp_NE   ART,r_nul      => r_3              // AR decRef
-           cbr      r_3            -> ardl24,ardd25    // AR decRef
-ardd25:    nop                                         // AR decRef
-ynul22:    nop                                         // remove old reference
-           store    r_4            => r_2              // to f
-           load     r_2            => r_3              // load reference
-           loadI    390            => r_5              // memaddref
-           push     r_5                                // memaddref
-           push     r_3                                // memaddref
-           jumpI                   -> memaddref        // memaddref
-           loadAI   r_3,4          => r_1              // add new reference
-           i2i      r_1            => ART              // AR incRef
-           cmp_NE   ART,r_nul      => r_5              // AR incRef
-           cbr      r_5            -> aril26,arid27    // AR incRef
-aril26:    loadI    399            => r_5              // AR incRef
-           push     r_5                                // AR incRef
-           subI     ART,16         => r_5              // AR incRef
-           push     r_5                                // AR incRef
-           jumpI                   -> memaddref        // AR incRef
-           loadAI   ART,-16        => ART              // AR incRef
-           cmp_NE   ART,r_nul      => r_5              // AR incRef
-           cbr      r_5            -> aril26,arid27    // AR incRef
-arid27:    nop                                         // AR incRef
-if_e7:     nop                                         // end target
-           loadI    409            => r_3              // malloc
-           push     r_3                                // malloc
-           loadI    8              => r_3              // malloc
-           push     r_3                                // malloc
-           jumpI                   -> memalloc         // malloc
-           pop                     => r_3              // malloc
-           loadI    2              => r_2              // 2
-           storeAI  r_2            => r_3,0            // store array element
-           loadI    2              => r_4              // 2
-           storeAI  r_4            => r_3,4            // store array element
-           addI     r_arp,8        => r_2              // add offset
-           load     r_2            => r_1              // load reference
-           cmp_EQ   r_1,r_nul      => r_4              // remove old reference
-           cbr      r_4            -> ynul28,nnul29    // remove old reference
-nnul29:    nop                                         // remove old reference
-           loadI    423            => r_4              // free
-           push     r_4                                // free
-           push     r_1                                // free
-           jumpI                   -> memfree          // free
-ynul28:    nop                                         // remove old reference
-           store    r_3            => r_2              // to arr
-           load     r_2            => r_4              // load reference
-           loadI    430            => r_5              // memaddref
-           push     r_5                                // memaddref
-           push     r_4                                // memaddref
-           jumpI                   -> memaddref        // memaddref
-           cmp_EQ   r_3,r_nul      => r_4              // remove old reference
-           cbr      r_4            -> ynul30,nnul31    // remove old reference
-nnul31:    nop                                         // remove old reference
-           loadI    437            => r_4              // free
-           push     r_4                                // free
-           push     r_3                                // free
-           jumpI                   -> memfree          // free
-ynul30:    nop                                         // remove old reference
-           addI     r_arp,8        => r_2              // add offset
-           load     r_2            => r_2              // get array object
-           loadI    0              => r_4              // 0
-           loadAI   r_2,-4         => r_3              // check array index
-           divI     r_3,4          => r_3              // check array index
-           cmp_LT   r_4,r_3        => r_3              // check array index
-           cmp_GE   r_4,r_nul      => r_1              // check array index
-           and      r_3,r_1        => r_1              // check array index
-           cbr      r_1            -> nob33,oob32      // check array index
-oob32:     haltI    1634692962                         // array index out of bounds
-nob33:     multI    r_4,4          => r_4              // multiply index by size
-           add      r_2,r_4        => r_2              // get array index address
-           load     r_2            => r_2              // load address
-           addI     r_arp,8        => r_1              // add offset
-           load     r_1            => r_1              // get array object
-           loadI    1              => r_3              // 1
-           loadAI   r_1,-4         => r_5              // check array index
-           divI     r_5,4          => r_5              // check array index
-           cmp_LT   r_3,r_5        => r_5              // check array index
-           cmp_GE   r_3,r_nul      => r_4              // check array index
-           and      r_5,r_4        => r_4              // check array index
-           cbr      r_4            -> nob35,oob34      // check array index
-oob34:     haltI    1634692962                         // array index out of bounds
-nob35:     multI    r_3,4          => r_3              // multiply index by size
-           add      r_1,r_3        => r_1              // get array index address
-           load     r_1            => r_1              // load address
-           add      r_2,r_1        => r_2              // +
-           out      "",r_2                             // 
-           loadAI   r_arp,0        => r_1              // remove reference get var
-           cmp_EQ   r_1,r_nul      => r_3              // remove reference
-           cbr      r_3            -> ynul36,nnul37    // remove reference
-nnul37:    nop                                         // remove reference
-           loadI    474            => r_3              // free
-           push     r_3                                // free
-           push     r_1                                // free
-           jumpI                   -> memfree          // free
-           loadAI   r_1,4          => r_1              // remove reference
-           i2i      r_1            => ART              // AR decRef
-           cmp_NE   ART,r_nul      => r_3              // AR decRef
-           cbr      r_3            -> ardl38,ardd39    // AR decRef
-ardl38:    loadI    483            => r_3              // AR decRef
-           push     r_3                                // AR decRef
-           subI     ART,16         => r_3              // AR decRef
-           push     r_3                                // AR decRef
-           jumpI                   -> memfree          // AR decRef
-           loadAI   ART,-16        => ART              // AR decRef
-           cmp_NE   ART,r_nul      => r_3              // AR decRef
-           cbr      r_3            -> ardl38,ardd39    // AR decRef
-ardd39:    nop                                         // AR decRef
-ynul36:    nop                                         // remove reference
-           loadAI   r_arp,4        => r_1              // remove reference get var
-           cmp_EQ   r_1,r_nul      => r_3              // remove reference
-           cbr      r_3            -> ynul40,nnul41    // remove reference
-nnul41:    nop                                         // remove reference
-           loadI    496            => r_3              // free
-           push     r_3                                // free
-           push     r_1                                // free
-           jumpI                   -> memfree          // free
-           loadAI   r_1,4          => r_1              // remove reference
-           i2i      r_1            => ART              // AR decRef
-           cmp_NE   ART,r_nul      => r_3              // AR decRef
-           cbr      r_3            -> ardl42,ardd43    // AR decRef
-ardl42:    loadI    505            => r_3              // AR decRef
-           push     r_3                                // AR decRef
-           subI     ART,16         => r_3              // AR decRef
-           push     r_3                                // AR decRef
-           jumpI                   -> memfree          // AR decRef
-           loadAI   ART,-16        => ART              // AR decRef
-           cmp_NE   ART,r_nul      => r_3              // AR decRef
-           cbr      r_3            -> ardl42,ardd43    // AR decRef
-ardd43:    nop                                         // AR decRef
-ynul40:    nop                                         // remove reference
-           loadAI   r_arp,8        => r_1              // remove reference get var
-           cmp_EQ   r_1,r_nul      => r_3              // remove reference
-           cbr      r_3            -> ynul44,nnul45    // remove reference
-nnul45:    nop                                         // remove reference
-           loadI    518            => r_3              // free
-           push     r_3                                // free
-           push     r_1                                // free
-           jumpI                   -> memfree          // free
-ynul44:    nop                                         // remove reference
-           subI     r_arp,16       => r_arp            // deconstruct main AR
-           loadI    524            => r_2              // free
-           push     r_2                                // free
-           push     r_arp                              // free
-           jumpI                   -> memfree          // free
diff --git a/test.boppi.txt b/test.boppi.txt
deleted file mode 100644
index 53bff68..0000000
--- a/test.boppi.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-var (int)->int f;
-function int f1(int x) x;
-if false then f := f1; f := f fi;
-var int[] arr; arr := [2,2];
-print(arr[0]+arr[1]);