add optimization