add bartering
prepare for arbitrarily complex items