Add Product model, other improvements and methods.