entity product refactor 2.0