Added goal and inefficient goal? function