@gilboonet thank you for that. after a few mis-steps and with the guidance of editor prompts, i came up with this which seems to work for the sphere with a sound hole. i'm tickled pink because i had wanted to provide form fields for the parameters also, but due to my newbieness, thought it would be additional html/javascripting. function main(params) { var sr = params.sphereradius; var sh = params.soundhole; var wt = params.wallthickness; var fn = params.fragmentnumber; return [ difference(sphere({r:sr+wt, center:true, fn:fn}), sphere({r:sr, center:true, fn:fn}), cylinder ({r:sh, h:-(sr+wt)})) ]; } function getParameterDefinitions() { return [ { name: 'sphereradius', type: 'number', initial: 47, caption: 'Sphere Radius' }, { name: 'soundhole', type: 'number', initial: 15, caption: 'Sound Hole Radius' }, { name: 'wallthickness', type: 'number', initial: 2, caption: 'Wall Thickness' }, { name: 'fragmentnumber', type: 'number', initial: 100, caption: 'Fragment Number' }, ]; }