public void Update(int xBound, int yBound) {
        //Make sure model is fully initialized before running
        if (!initialized) return;
        
        //Find difference in time
        long currentTime = System.currentTimeMillis();
        double timeModifier = (currentTime-lastTick)/TICK_RATE;
        //System.out.println("Current: "+currentTime+" Last: "+lastTick+"Diff: "+(currentTime-lastTick));
        //System.out.println("timeModifier: "+timeModifier+" turnSpeed*timeMod: "+(turnSpeed*timeModifier));
        calcRotation(timeModifier);
        calcVelocity(timeModifier);
        
        //Update center
        xCenter += xVelocity;
        yCenter += yVelocity;

        //Apply bounds
        if(xCenter<0)xCenter+=xBound;
        if(xCenter>xBound)xCenter-=xBound;
        if(yCenter<0)yCenter+=yBound;
        if(yCenter>yBound)yCenter-=yBound;

        //Calculate position of top-left edge (at 0 degrees)
        xPosition = xCenter-(width/2.0);
        yPosition = yCenter-(height/2.0);

        Rectangle2D.Double rect = new Rectangle2D.Double(xPosition+(width/2), yPosition+(height/2), width, width);
        shape = AffineTransform.getRotateInstance(faceAngle, xPosition, yPosition).createTransformedShape(rect);
        
        lastTick = currentTime;
    }