Air Hockey Pad

Made to replace the original ones that always broke down! Below the OpenScad code I wrote:

$fn = 150;
difference(){
union(){
difference(){
cylinder (10,35,35);
translate ([0,0,4]) cylinder (8,30,36);
union(){
for (r = [0:90:270]) {
rotate ([0,0,r]){
for (i = [-4:1:4]) {
translate ([i,23.5,-2]) cylinder (10,2.5,5);
}
}}
}}
union(){
cylinder (40,17.5,16.5);
translate ([0,0,40]) sphere (16.5);
}}
union(){
translate ([0,0,-1]) cylinder (36,12.5,5.5);
translate ([0,0,35]) sphere (5.5);
}
}

I'm a beginner, so the code could definitely be written better ....