a few minor changes made at Apr 17/18, 2012 and 20 May, 2012