add optimization and default value