refactor price