code: function initialize(init, update, subscriptions, renderer)
  {
  	// ambient state
  	var managers = {};
  	var updateView;
  
  	// init and update state in main process
  	var initApp = _elm_lang$core$Native_Scheduler.nativeBinding(function(callback) {
  		var model = init._0;
  		updateView = renderer(enqueue, model);
  		var cmds = init._1;
  		var subs = subscriptions(model);
  		dispatchEffects(managers, cmds, subs);
  		callback(_elm_lang$core$Native_Scheduler.succeed(model));
  	});
  
  	function onMessage(msg, model)
  	{
  		return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback) {
  			var results = A2(update, msg, model);
  			model = results._0;
  			updateView(model);
  			var cmds = results._1;
  			var subs = subscriptions(model);
  			dispatchEffects(managers, cmds, subs);
  			callback(_elm_lang$core$Native_Scheduler.succeed(model));
  		});
  	}
  
  	var mainProcess = spawnLoop(initApp, onMessage);
  
  	function enqueue(msg)
  	{
  		_elm_lang$core$Native_Scheduler.rawSend(mainProcess, msg);
  	}
  
  	var ports = setupEffects(managers, enqueue);
  
  	return ports ? { ports: ports } : {};
  }
docs: INITIALIZE A PROGRAM