cleanup, update, tests, and some frontend improvements
depends on spree_frontend