add optimization mode parameter