finish the price refactor