Further efforts to make SProduct more object-oriented ie take it outside any closure.