Index: sasmodels/direct_model.py
===================================================================
--- sasmodels/direct_model.py	(revision a7db39fa74d341ee649738104b024c04ff147fd3)
+++ sasmodels/direct_model.py	(revision b39bf3b280713aebf2f5492c8799baf517ae6248)
@@ -61,5 +61,5 @@
     #print("in call_kernel: pars:", list(zip(*mesh))[0])
     call_details, values, is_magnetic = make_kernel_args(calculator, mesh)
-    #print("in call_kernel: values:", values)
+    print("in call_kernel: values:", values)
     return calculator(call_details, values, cutoff, is_magnetic)
 
Index: sasmodels/model_test.py
===================================================================
--- sasmodels/model_test.py	(revision 66525220bd0776626c4e777688f4abdfa970d258)
+++ sasmodels/model_test.py	(revision b39bf3b280713aebf2f5492c8799baf517ae6248)
@@ -247,5 +247,5 @@
                                            platform=self.platform)
                     # run the tests
-                    self.info = ps_model.info
+                    #self.info = ps_model.info
                     #print("SELF.INFO PARAMS!!!",[p.id for p in self.info.parameters.call_parameters])
                     #print("PS MODEL PARAMETERS:",[p.id for p in ps_model.info.parameters.call_parameters])
@@ -307,6 +307,7 @@
             """Run a single test case."""
             user_pars, x, y = test[:3]
-            pars = expand_pars(self.info.parameters, user_pars)
-            invalid = invalid_pars(self.info.parameters, pars)
+            print("PS MODEL PARAMETERS:",[p.id for p in model.info.parameters.call_parameters])
+            pars = expand_pars(model.info.parameters, user_pars)
+            invalid = invalid_pars(model.info.parameters, pars)
             if invalid:
                 raise ValueError("Unknown parameters in test: " + ", ".join(invalid))
Index: sasmodels/models/sphere.py
===================================================================
--- sasmodels/models/sphere.py	(revision a430f5f6225c7f11c9819060ea52815f3a71e86d)
+++ sasmodels/models/sphere.py	(revision b39bf3b280713aebf2f5492c8799baf517ae6248)
@@ -49,6 +49,6 @@
 ----------------------------
 
-* **Author:** 
-* **Last Modified by:** 
+* **Author:**
+* **Last Modified by:**
 * **Last Reviewed by:** S King and P Parker **Date:** 2013/09/09 and 2014/01/06
 * **Source added by :** Steve King **Date:** March 25, 2019
@@ -75,5 +75,5 @@
               ["sld_solvent", "1e-6/Ang^2", 6, [-inf, inf], "sld",
                "Solvent scattering length density"],
-              ["radius", "Ang", 50, [0, inf], "volume",
+              ["radius", "Ang", 45, [0, inf], "volume",
                "Sphere radius"],
              ]
@@ -92,30 +92,33 @@
 
 tests = [
-    [{}, 0.2, 0.726362],
-    [{"scale": 1., "background": 0., "sld": 6., "sld_solvent": 1.,
-      "radius": 120., "radius_pd": 0.2, "radius_pd_n":45},
-     0.2, 0.2288431],
-    [{"radius": 120., "radius_pd": 0.02, "radius_pd_n":45},
-     0.2, 792.0646662454202, [1166737.0473152], 120.0, 7246723.820358589, 1.0], # the longer list here checks  F1, F2, R_eff, volume, volume_ratio = call_Fq(kernel, pars)
-    #          But note P(Q) = F2/volume,  F1 and F2 are vectors, for some reason only F2 needs square brackets
-    #          BUT what is scaling of F1 ???  At low Pd F2 ~ F1^2 ?
-   [{"radius": 120., "radius_pd": 0.2, "radius_pd_n":45},
-     0.2, 1.233304061, [1850806.119736], 120.0, 8087664.1226, 1.0], # the longer list here checks  F1, F2, R_eff, volume, volume_ratio = call_Fq(kernel, pars)
-    [{"@S": "hardsphere"},
-       0.01, 55.881884232102124], # this is current value, not verified elsewhere yet
-    [{"@S": "hardsphere"},
-       0.2, 0.14730859242492958], #  this is current value, not verified elsewhere yet
-    [{"@S": "hardsphere"},
-       0.1, 0.7940350343811906], #  this is current value, not verified elsewhere yet
-	[{"@S": "hardsphere",          # hard sphere structure factor
+   #  [{}, 0.2, 0.726362],
+   #  [{"scale": 1., "background": 0., "sld": 6., "sld_solvent": 1.,
+   #    "radius": 120., "radius_pd": 0.2, "radius_pd_n":45},
+   #   0.2, 0.2288431],
+   # [{"radius": 120., "radius_pd": 0.02, "radius_pd_n":45},
+   #   0.2, 792.0646662454202, [1166737.0473152], 120.0, 7246723.820358589, 1.0], # the longer list here checks  F1, F2, R_eff, volume, volume_ratio = call_Fq(kernel, pars)
+   #  #          But note P(Q) = F2/volume,  F1 and F2 are vectors, for some reason only F2 needs square brackets
+   #  #          BUT what is scaling of F1 ???  At low Pd F2 ~ F1^2 ?
+   # [{"@S": "hardsphere"},
+   #    0.01, 55.881884232102124], # this is current value, not verified elsewhere yet
+   # [{"radius": 120., "radius_pd": 0.2, "radius_pd_n":45},
+   #   0.2, 1.233304061, [1850806.119736], 120.0, 8087664.1226, 1.0], # the longer list here checks  F1, F2, R_eff, volume, volume_ratio = call_Fq(kernel, pars)
+   # [{"@S": "hardsphere"},
+   #     0.2, 0.14730859242492958], #  this is current value, not verified elsewhere yet
+    # [{"@S": "hardsphere"},
+    #    0.1, 0.7940350343811906], #  this is current value, not verified elsewhere yet
+    [{"@S": "hardsphere",
+     "radius": 120., "radius_pd": 0.2, "radius_pd_n":45,
+     "volfraction":0.2,
+     "radius_effective":45.0,        # hard sphere structure factor
      "structure_factor_mode": 1,  # decoupling approximation
-     "effective_radius_type": 1, "radius_effective":27.0 # equivalent sphere   Currently have hardwired model_test to accept radius_effective 
+     #"effective_radius_type": 1 # equivalent sphere   Currently have hardwired model_test to accept radius_effective
      # direct_model has the name & value BUT does it get passed to S(Q)???  What about volfracion, plus the many parameters used by other S(Q) ?
      # effective_radius_type does NOT appear in the list, has it been stripped out???
-	 }, 0.1, 0.7940350343881906],
-#	[{"@S": "hardsphere",          # hard sphere structure factor
-#     "structure_factor_mode": 3,  #  -  WHY same result?
-#     "effective_radius_type": 3, "radius_effective":23.0    # 
-#	 }, 0.1, 0.7940350343881906]
+     }, 0.01, 0.7940350343881906],
+	# [{"@S": "hardsphere",          # hard sphere structure factor
+    # "structure_factor_mode": 2,  #  -  WHY same result?
+    # "effective_radius_type": 2, "radius_effective":23.0    #
+	#  }, 0.1, 0.7940350343881906]
 ]
 # putting None for expected result will pass the test if there are no errors from the routine, but without any check on the value of the result
Index: sasmodels/product.py
===================================================================
--- sasmodels/product.py	(revision 0b8a1fc941701e9f60c61e73bf3ed742b12062d9)
+++ sasmodels/product.py	(revision b39bf3b280713aebf2f5492c8799baf517ae6248)
@@ -284,5 +284,7 @@
         # unless the model doesn't support beta mode, in which case it is first
         have_radius_type = p_info.effective_radius_type is not None
+        #print(p_npars,s_npars)
         radius_type_offset = 2+p_npars+s_npars + (1 if have_beta_mode else 0)
+        print(values[radius_type_offset])
         radius_type = int(values[radius_type_offset]) if have_radius_type else 0
 
@@ -342,6 +344,6 @@
         # polydispersity distribution slot in the values array due to
         # implementation details in kernel_iq.c.
-        #print("R_eff=%d:%g, volfrac=%g, volume ratio=%g"
-        #      % (radius_type, effective_radius, volfrac, volume_ratio))
+        print("R_eff=%d:%g, volfrac=%g, volume ratio=%g"
+              % (radius_type, effective_radius, volfrac, volume_ratio))
         if radius_type > 0:
             # set the value to the model R_eff and set the weight to 1
@@ -358,5 +360,5 @@
 
         # Combine form factor and structure factor
-        #print("beta", beta_mode, F1, F2, S)
+        print("beta", beta_mode, F1, F2, S)
         PS = F2 + F1**2*(S-1) if beta_mode else F2*S
         final_result = combined_scale*PS + background
