exchange value & curr
use deep copy instead pass "plugins" directly