Updated with more tests. Added methods for adding and remove listeners
in Product
Merge remote-tracking branch 'origin/dev-model' into dev-model