some improvements by Graham and me.. i've created a named scope into Product model as well