added optimal change