compute needs to do all the heavy lifting because of adjustment callbacks

adjustment callbacks are only in Spree proper, but not here. Just need to do some code shuffling to get it to resemble what Spree is doing for the time being.