   int channel = 1;
   button = sensorIR.readChannelButton(channel);
   
-  driveForward(button);
-  driveBackward(button);
+  steeringDegrees = getSteeringPosition();
+  power = powerTurning(steeringDegrees);
+  Serial.print("Power rating: ");
+  Serial.println(power);
+  driveForward(button, power);
+  driveBackward(button, power);
   turnLeft(button);
   turnRight(button);
-  
-  steeringDegrees = getSteeringPosition();
-  
+ 
   Serial.print("Degrees: ");
   Serial.println(steeringDegrees);
 }
 
-void driveForward(int button)
+void driveForward(int button, int32_t power)
 {
   if(button == 1)
   {
-    evshield.bank_b.motorRunUnlimited(SH_Motor_1, SH_Direction_Forward, 100);
-    evshield.bank_a.motorRunUnlimited(SH_Motor_1, SH_Direction_Forward, 100);
+    evshield.bank_b.motorRunUnlimited(SH_Motor_1, SH_Direction_Forward, power);
+    evshield.bank_a.motorRunUnlimited(SH_Motor_1, SH_Direction_Forward, power);
   }
 }
 
-void driveBackward(int button)
+void driveBackward(int button, int power)
 {
   if(button == 2)
   {
-    evshield.bank_b.motorRunUnlimited(SH_Motor_1, SH_Direction_Reverse, 100);
-    evshield.bank_a.motorRunUnlimited(SH_Motor_1, SH_Direction_Reverse, 100);
+    evshield.bank_b.motorRunUnlimited(SH_Motor_1, SH_Direction_Reverse, power);
+    evshield.bank_a.motorRunUnlimited(SH_Motor_1, SH_Direction_Reverse, power);
+  }
+}
+
+//use getSteering() as method to calculate current position
+int32_t powerTurning(int steeringValue)
+{
+  Serial.println("calculating power");
+  if(steeringValue < (centerSteer + 10))
+  {
+    Serial.println("Turned Righ");
+    return 100;
+  }
+  else
+  {
+    return 1;
   }
 }
 

#include <EVShield.h>
#include <EVShieldAGS.h>
#include <EVs_EV3Infrared.h>

/* Init Shield */
EVShield evshield(0x34, 0x36);

  return evshield.bank_b.motorGetEncoderPosition(SH_Motor_2);
}

int32_t setMaxRight()
{
  evshield.bank_b.motorRunSeconds(SH_Motor_2, SH_Direction_Forward, 100, 5, SH_Completion_Wait_For, SH_Next_Action_Float);
  delay(5000);
  return evshield.bank_b.motorGetEncoderPosition(SH_Motor_2);
}

int32_t setMaxLeft()
{
  evshield.bank_b.motorRunSeconds(SH_Motor_2, SH_Direction_Reverse, 100, 5, SH_Completion_Wait_For, SH_Next_Action_Float);
  delay(5000);
