public void update(float dt) {

        // handle key presses
        int ttx = (Keyboard.isKeyPressed(Keyboard.Key.A) ? -1 : 0) + (Keyboard.isKeyPressed(Keyboard.Key.D) ? 1 : 0);
        int tty = (Keyboard.isKeyPressed(Keyboard.Key.W) ? -1 : 0) + (Keyboard.isKeyPressed(Keyboard.Key.S) ? 1 : 0);

        Vector2 target = new Vector2(ttx, tty);

        // normalize target direction
        target = target.normalize();

        // set length to target velocity
        // increasing accelRate should make movements more sharp and dramatic
        target = target.scl(accelRate);

        // target is now acceleration
        Vector2 acc = new Vector2(target);

        // integrate acceleration to get velocity
        velocity = velocity.sclAdd(acc, dt);

        // limit velocity vector to maxMoveSpeed
        velocity = velocity.clamp(0, maxMoveSpeed);

        // add velocity to position
        position = position.add(velocity);

        // apply friction
        velocity = velocity.scl(fConst);

        sprite.setPosition(position.toVector2f());

        // set player angle based on mouse position
        Vector2 mousePos = new Vector2(Mouse.getPosition(Window.getRenderWindow()));
        Vector2 truePos = new Vector2(Window.getRenderWindow().mapCoordsToPixel(position.toVector2f()));
        angle = (float) Math.atan2(mousePos.y - truePos.y, mousePos.x - truePos.x);

        angle *= (180 / Math.PI);
        if (angle < 0) {
            angle += 360;
        }
        
        angle += 90;

        sprite.setRotation(angle);

        // if moving, stream particles from opposite side of movement 
        if (ttx != 0 || tty != 0) {
            moveParticleSystem.addParticle();
        }
              
        float sin = (float) Math.sin(angle);
        float cos = (float) Math.cos(angle);
        
        // set position and angle of particle based off current player sprite
        Vector2 particlePos = position.add(new Vector2(cos, sin));
        moveParticleSystem.setOrigin(particlePos);
        
        moveParticleSystem.setParticleDecayRate(4);
        
        moveParticleSystem.setParticleRadius(2);
    }