Написал небольшую игру, 170 строк кода, все в одном классе. Можете посоветовать, стоит ли разделить ее на отдельные классы?

Код AS3:
package
{
import flash.display.Loader;
import flash.display.MorphShape;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.net.URLRequest;
import flash.system.LoaderContext;
import flash.system.ApplicationDomain;
import flash.utils.*;
/**
* ...
* @author me
*/
public class Main extends Sprite
{
private var loader: Loader = new Loader();
private var bars: Array = new Array(); //все барельефы
private var puttedBars: Array = new Array(); //барельефы, поставленые на свободные места
private var correctBars: Array = new Array(); //правильная комбинация
private var place: MovieClip;
private var activeBar: MovieClip = new MovieClip(); //барельеф под курсором
private var emptyBar: MovieClip;
private var winClip: MovieClip;
private var posY: Number = 120; //координата У барельефов
private var posX: Number = 0; //координата Х барельефов
private const newX: Number = 140; //координаты второго ряда барельефов
private const newY: Number = 220;
private const deltaX: Number = 70;
private const barsCount: int = 7; //число барельефов, которые надо расставить
private const allBars: int = 14;
private var timer: Timer = new Timer(50);
private var i:int;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
loadAssets();
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
stage.addEventListener(MouseEvent.CLICK, stageMouseClick);
timer.addEventListener(TimerEvent.TIMER, animate);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
}
private function loadAssets():void
{
var path: URLRequest = new URLRequest("assets.swf");
var context: LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoad);
loader.load(path, context);
}
private function onLoad(e: Event):void
{
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoad);
var tmp: Class = getDefinitionByName("places") as Class;
place = new tmp();
addChild(place);
for (i = 0; i < barsCount; ++i)
{
tmp = getDefinitionByName("emptyBar") as Class;
emptyBar = new tmp();
posX += deltaX;
emptyBar.x = posX;
emptyBar.addEventListener(MouseEvent.CLICK, emptyClick);
addChild(emptyBar);
}
posX = 0;
for ( i = 1; i <= allBars; ++i)
{
var bar: Class = getDefinitionByName("bar" + i) as Class;
var tempBar: MovieClip = new bar();
bars.push(tempBar);
tempBar.y = posY;
tempBar.x = posX;
posX += deltaX;
if (i >= 9) posY = newY;
if (i == 9) posX = newX;
addChild(tempBar);
tempBar.addEventListener(MouseEvent.CLICK, mouseClick);
if (i <= barsCount) correctBars.push(tempBar);
}
tmp = getDefinitionByName("win") as Class;
winClip = new tmp();
addChild(winClip);
winClip.visible = false;
}
private function mouseMove(e: Event):void
{
if (activeBar)
{
activeBar.x = mouseX;
activeBar.y = mouseY;
}
}
private function mouseClick(e: Event):void //клик по барельефу
{
e.target is MovieClip
{
activeBar = e.target as MovieClip;
}
e.stopImmediatePropagation();
}
private function stageMouseClick(e: Event):void
{
activeBar = null;
}
private function emptyClick(e: Event):void //клик по месту, куда устанавливать барельеф
{
if (activeBar)
{
activeBar.x = e.target.x;
activeBar.y = e.target.y;
puttedBars.push(activeBar);
}
if (puttedBars.length == barsCount) checkForWin(); //прверка на правильность комбинации установленых барельефов
}
private function equals(arr1: Array, arr2: Array):Boolean
{
arr1.sort();
arr2.sort();
for (i = 0; i < arr1.length; ++i)
{
if (arr1[i] != arr2[i]) return false;
}
return true;
}
private function checkForWin():void
{
if (equals(puttedBars, correctBars))
{
timer.start();
winClip.visible = true;
winClip.x = posX;
winClip.y = 2 * posY;
removeEventListener(MouseEvent.CLICK, emptyClick);
for (i = 0; i < bars.length; ++i)
{
bars[i].mouseEnabled = false;
}
}
}
private function animate(e: Event):void
{
winClip.rotation += 10;
}
}
}