|  | @@ -90,7 +90,7 @@ function AmberC(amber_dir, closure_jar) {
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * Default values.
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -var createDefaults = function(amber_dir){
 | 
	
		
			
				|  |  | +var createDefaults = function(amber_dir, finished_callback){
 | 
	
		
			
				|  |  |  	return {
 | 
	
		
			
				|  |  |  		'smalltalk': {}, // the evaluated compiler will be stored in this variable (see create_compiler)
 | 
	
		
			
				|  |  |  		'load': [],
 | 
	
	
		
			
				|  | @@ -109,7 +109,8 @@ var createDefaults = function(amber_dir){
 | 
	
		
			
				|  |  |  		'compile': [],
 | 
	
		
			
				|  |  |  		'compiled_categories': [],
 | 
	
		
			
				|  |  |  		'compiled': [],
 | 
	
		
			
				|  |  | -		'program': undefined
 | 
	
		
			
				|  |  | +		'program': undefined,
 | 
	
		
			
				|  |  | +		'finished_callback': finished_callback
 | 
	
		
			
				|  |  |  	};
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -117,14 +118,14 @@ var createDefaults = function(amber_dir){
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * Main function for executing the compiler.
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -AmberC.prototype.main = function(parameters) {
 | 
	
		
			
				|  |  | +AmberC.prototype.main = function(parameters, finished_callback) {
 | 
	
		
			
				|  |  |  	console.time('Compile Time');
 | 
	
		
			
				|  |  |  	var options = parameters || process.argv.slice(2);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	if (1 > options.length) {
 | 
	
		
			
				|  |  |  		this.usage();
 | 
	
		
			
				|  |  |  	} else {
 | 
	
		
			
				|  |  | -		this.defaults = createDefaults(this.amber_dir);
 | 
	
		
			
				|  |  | +		this.defaults = createDefaults(this.amber_dir, finished_callback);
 | 
	
		
			
				|  |  |  		this.handle_options(options);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  };
 | 
	
	
		
			
				|  | @@ -699,6 +700,9 @@ AmberC.prototype.optimize = function() {
 | 
	
		
			
				|  |  |  	var self = this;
 | 
	
		
			
				|  |  |  	var optimization_done = new Combo(function() {
 | 
	
		
			
				|  |  |  		console.timeEnd('Compile Time');
 | 
	
		
			
				|  |  | +		if (undefined !== defaults.finished_callback) {
 | 
	
		
			
				|  |  | +			defaults.finished_callback();
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	});
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	if (defaults.closure_parts) {
 |