Wow its complicated!