Refactor/Move Product

@ken, @prabinv and @hippee-lee Please code review. I have corresponding PR in Method.