generate Product model