 	public class ViewerView extends Sprite {
 
 		private var _model:AppModel;
+		private var _assets:Vector.<Asset>;
+		private var _window:Window;
 
 		public function ViewerView(model:AppModel = null) {
 			super();

			this.stage.align = StageAlign.TOP_LEFT;
			Miracle.start(this.stage, this.createHandler, true);
		}
		//} endregion PRIVATE\PROTECTED METHODS ========================================

		//==============================================================================
		//{region							EVENTS HANDLERS
		private function createHandler():void {
			if(_model.viewerInput == null){
				_model.viewerInput = _model.lastFileDirection;
				_model.viewerInput.addEventListener(Event.SELECT, this.selectFileHandler)
				_model.viewerInput.browseForOpen("Open file that you want to view");
			}
		}


			stream.readBytes(byteArray);
			stream.close();
			//parse
			if(_assets == null)_assets = new <Asset>[];
			_assets.push(new Asset(_model.viewerInput.name, byteArray));
//			var name:String = asset.name;
			if(_assets.length > 1){
				this.choseAnimation();
				Miracle.createScene(_assets, 1);
				Miracle.resume();
			}else{
				this.createHandler(true);
			}
		}

		private function selectAnimationHandler(event:Event):void {
			var list:List = event.target as List;
			list.removeEventListener(event.type, this.selectAnimationHandler);
			log(this, "selectAnimationHandler", list.selectedItem);
			this.removeChild(_window);
			_window = null;
			//add animation to miracle
			var name:String = list.selectedItem.toString();
			Miracle.currentScene.createImage(name)
			 .addEventListener(Event.ADDED_TO_STAGE, this.imageAddedToStage);
		}

		private function imageAddedToStage(event:Event):void {
