diff --git a/src/OCPikeInterpreter.m b/src/OCPikeInterpreter.m
index 84e25062aeb434c41e843054abb67e177379f817..ee90b0b993661686166fc8868f23413686a01a22 100644
--- a/src/OCPikeInterpreter.m
+++ b/src/OCPikeInterpreter.m
@@ -128,7 +128,7 @@ void shared_interpreter_cleanup(int exitcode)
     add_pike_string_constant("__embedded_resource_directory",
         master,
         strlen(master));
-								
+
     add_pike_string_constant("__master_cookie",
                              master,
                             strlen(master));
@@ -152,8 +152,7 @@ void shared_interpreter_cleanup(int exitcode)
 
 		move_svalue (Pike_sp++, &throw_value);
 		mark_free_svalue (&throw_value);
-	        err = (struct generic_error_struct *)
-	          get_storage (Pike_sp[-1].u.object, generic_error_program);
+	        err = get_storage (Pike_sp[-1].u.object, generic_error_program);
 
 	        t.type = PIKE_T_STRING;
 	        t.u.string = err->error_message;
diff --git a/src/backend.cmod b/src/backend.cmod
index 3125f7a0c3f558f663bbbf096ebdd11647990b33..360c50ab91f5edcc90e2b7cba5f7dc60f86d30b5 100644
--- a/src/backend.cmod
+++ b/src/backend.cmod
@@ -950,8 +950,7 @@ PIKECLASS Backend
 
        get_all_args("low_call_out", args, "%o", &co);
 
-       c = (struct Backend_CallOut_struct *)
-	 get_storage(co, Backend_CallOut_program);
+       c = get_storage(co, Backend_CallOut_program);
 
        if (!c) Pike_error("low_call_out(): Unexpected object from CallOut.\n");
 
@@ -4319,7 +4318,7 @@ static void check_set_timer(struct timeval tmp)
     
     if (!loc.o->prog)
     {
-      Pike_error ("Cannot access storage of destructed parent object.\n");
+        Pike_error("Cannot access storage of destructed parent object.\n") ;
     }
     
     _st = get_storage(loc.o, PollDeviceBackend_program);
@@ -5884,8 +5883,7 @@ void init_backend(void)
 #else
     default_backend_obj = clone_object(SelectBackend_program, 0);
 #endif
-    default_backend = (struct Backend_struct *)
-      get_storage(default_backend_obj, Backend_program);
+    default_backend = get_storage(default_backend_obj, Backend_program);
 
     mem_callback=add_memory_usage_callback(count_memory_in_call_outs,0,0);
     
diff --git a/src/error.c b/src/error.c
index 36242bfb44acca0a823bbbad057276bc9917850d..3561107ca600f124241cd1c9901215a8b028f6c6 100644
--- a/src/error.c
+++ b/src/error.c
@@ -903,8 +903,7 @@ PMOD_EXPORT DECLSPEC(noreturn) void generic_error_va(
   struct object *o, const char *func, const struct svalue *base_sp, int args,
   const char *fmt, va_list *fmt_args)
 {
-  struct generic_error_struct *err =
-    (struct generic_error_struct *) get_storage (o, generic_error_program);
+  struct generic_error_struct *err = get_storage (o, generic_error_program);
 
 #ifdef PIKE_DEBUG
   if (!err)
diff --git a/src/main.c b/src/main.c
index 88de93861f76f21f661a1ff3f568882586cca0ab..7fc68b68fa9dd20e2f0fe4de501a159dc4461170 100644
--- a/src/main.c
+++ b/src/main.c
@@ -651,7 +651,7 @@ int main(int argc, char **argv)
 
 	move_svalue (Pike_sp++, &throw_value);
 	mark_free_svalue (&throw_value);
-	err = (struct generic_error_struct *)
+	err = 
 	  get_storage (Pike_sp[-1].u.object, generic_error_program);
 
 	SET_SVAL(t, PIKE_T_STRING, 0, string, err->error_message);
diff --git a/src/modules/DVB/dvb.c b/src/modules/DVB/dvb.c
index 5218a4800646c3d3b97d257c7d74ce2ceaeda91e..e6ade42cb900e8e7823dd4696cabd1e74b9b2b99 100644
--- a/src/modules/DVB/dvb.c
+++ b/src/modules/DVB/dvb.c
@@ -1282,7 +1282,7 @@ static void f_stream_create(INT32 args) {
 
   dvbprog = Pike_sp[-1].u.object;
   Pike_sp--;
-  if( !dvbprog || !(dvbstor = (dvb_data *)get_storage( dvbprog, dvb_program )) )
+  if( !dvbprog || !(dvbstor =get_storage( dvbprog, dvb_program )) )
     Pike_error("This class cannot be instantiated directly\n");
 
   devname = mk_devname(DVB->cardn, DEMUXDEVICE);
diff --git a/src/modules/Fuse/fuse.c b/src/modules/Fuse/fuse.c
index 82d26cc17e707242997d3cb59ebdcab7d51ddca3..5fe6323269d52d8c48c82958afa736ee24fdcecc 100644
--- a/src/modules/Fuse/fuse.c
+++ b/src/modules/Fuse/fuse.c
@@ -73,7 +73,7 @@ static int pf_getattr(const char *path, struct stat *stbuf)
     push_text( path );
     apply( global_fuse_obj, "getattr", 1 );
     if( TYPEOF(Pike_sp[-1]) != PIKE_T_OBJECT ||
-	!(st = (struct stat *)get_storage( Pike_sp[-1].u.object, stat_program)) )
+	!(st = get_storage( Pike_sp[-1].u.object, stat_program)) )
 	DEFAULT_ERRNO();
     *stbuf = *st;
     return 0;
diff --git a/src/modules/Image/blit.c b/src/modules/Image/blit.c
index b3404f3bc8df59e6686795d0d55be632d444584b..7d1489cdd1b9ba75087cbeacff14781b37cce3e2 100644
--- a/src/modules/Image/blit.c
+++ b/src/modules/Image/blit.c
@@ -291,7 +291,7 @@ void image_paste(INT32 args)
 
    if (args<1
        || TYPEOF(sp[-args]) != T_OBJECT
-       || !(img=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       || !(img=get_storage(sp[-args].u.object,image_program)))
       bad_arg_error("image->paste",sp-args,args,1,"",sp+1-1-args,
 		"Bad argument 1 to image->paste()\n");
    if (!THIS->img) return;
@@ -370,7 +370,7 @@ void image_paste_alpha(INT32 args)
    if (args<2
        || TYPEOF(sp[-args]) != T_OBJECT
        || !sp[-args].u.object
-       || !(img=(struct image*)get_storage(sp[-args].u.object,image_program))
+       || !(img=get_storage(sp[-args].u.object,image_program))
        || TYPEOF(sp[1-args]) != T_INT)
       bad_arg_error("image->paste_alpha",sp-args,args,0,"",sp-args,
 		"Bad arguments to image->paste_alpha()\n");
@@ -459,11 +459,11 @@ CHRONO("image_paste_mask init");
    if (args<2)
       Pike_error("illegal number of arguments to image->paste_mask()\n");
    if (TYPEOF(sp[-args]) != T_OBJECT
-       || !(img=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       || !(img=get_storage(sp[-args].u.object,image_program)))
       bad_arg_error("image->paste_mask",sp-args,args,1,"",sp+1-1-args,
 		"Bad argument 1 to image->paste_mask()\n");
    if (TYPEOF(sp[1-args]) != T_OBJECT
-       || !(mask=(struct image*)get_storage(sp[1-args].u.object,image_program)))
+       || !(mask=get_storage(sp[1-args].u.object,image_program)))
       bad_arg_error("image->paste_mask",sp-args,args,2,"",sp+2-1-args,
 		"Bad argument 2 to image->paste_mask()\n");
    if (!THIS->img) return;
@@ -565,7 +565,7 @@ void image_paste_alpha_color(INT32 args)
       SIMPLE_TOO_FEW_ARGS_ERROR("image->paste_alpha_color",1);
    if (TYPEOF(sp[-args]) != T_OBJECT
        || !sp[-args].u.object
-       || !(mask=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       || !(mask=get_storage(sp[-args].u.object,image_program)))
       bad_arg_error("image->paste_alpha_color",sp-args,args,1,"",sp+1-1-args,
 		"Bad argument 1 to image->paste_alpha_color()\n");
    if (!THIS->img) return;
diff --git a/src/modules/Image/colors.c b/src/modules/Image/colors.c
index 7462ef3e3ac6d88cf677e7b1a982166400fc7371..3cf40344fb123609bcb05bbad64b50a83d045bc1 100644
--- a/src/modules/Image/colors.c
+++ b/src/modules/Image/colors.c
@@ -284,8 +284,7 @@ static void make_colors(void)
       copy_shared_string(c[i].pname,sp[-1].u.string);
 
       push_object(clone_object(image_color_program,0)); 
-      cs=(struct color_struct*)
-	 get_storage(sp[-1].u.object,image_color_program);
+      cs=get_storage(sp[-1].u.object,image_color_program);
       cs->rgb.r=(COLORTYPE)c[i].r;
       cs->rgb.g=(COLORTYPE)c[i].g;
       cs->rgb.b=(COLORTYPE)c[i].b;
@@ -954,8 +953,7 @@ static void image_color_equal(INT32 args)
    if (TYPEOF(sp[-1]) == T_OBJECT)
    {
       struct color_struct *other;
-      other=(struct color_struct*)
-	 get_storage(sp[-1].u.object,image_color_program);
+      other=get_storage(sp[-1].u.object,image_color_program);
       if (other&&
 	  other->rgbl.r==THIS->rgbl.r &&
 	  other->rgbl.g==THIS->rgbl.g &&
@@ -1179,8 +1177,7 @@ int image_color_svalue(struct svalue *v,rgb_group *rgb)
 {
    if (TYPEOF(*v) == T_OBJECT)
    {
-      struct color_struct *cs=(struct color_struct*)
-	 get_storage(v->u.object,image_color_program);
+      struct color_struct *cs=get_storage(v->u.object,image_color_program);
 
       if (cs) 
       {
@@ -1207,8 +1204,7 @@ int image_color_svalue(struct svalue *v,rgb_group *rgb)
       image_make_color(1);
       if (TYPEOF(sp[-1]) == T_OBJECT)
       {
-	 struct color_struct *cs=(struct color_struct*)
-	    get_storage(sp[-1].u.object,image_color_program);
+	 struct color_struct *cs=get_storage(sp[-1].u.object,image_color_program);
 	 *rgb=cs->rgb;
 	 pop_stack();
 	 return 1;
@@ -1505,8 +1501,7 @@ static void _image_make_rgbl_color(INT32 r,INT32 g,INT32 b)
 
    push_object(clone_object(image_color_program,0));
 
-   cs=(struct color_struct*)
-      get_storage(sp[-1].u.object,image_color_program);
+   cs=get_storage(sp[-1].u.object,image_color_program);
 
    cs->rgbl.r=(INT32)r;
    cs->rgbl.g=(INT32)g;
@@ -1552,8 +1547,7 @@ void _image_make_rgb_color(INT32 r,INT32 g,INT32 b)
 
    push_object(clone_object(image_color_program,0));
 
-   cs=(struct color_struct*)
-      get_storage(sp[-1].u.object,image_color_program);
+   cs=get_storage(sp[-1].u.object,image_color_program);
 
    cs->rgb.r=(COLORTYPE)r;
    cs->rgb.g=(COLORTYPE)g;
diff --git a/src/modules/Image/colortable.c b/src/modules/Image/colortable.c
index 7a63f9355d5df0c8b6daf10818faa0575a234fc2..52a432eb2f64a5ef9a5978421af11f1fc383eebc 100644
--- a/src/modules/Image/colortable.c
+++ b/src/modules/Image/colortable.c
@@ -2168,8 +2168,7 @@ static void image_colortable_add(INT32 args)
       if (TYPEOF(sp[-args]) == T_OBJECT)
       {
 	 struct neo_colortable *ct2;
-	 ct2=(struct neo_colortable*)
-	    get_storage(sp[-args].u.object,image_colortable_program);
+	 ct2=get_storage(sp[-args].u.object,image_colortable_program);
 	 if (ct2)
 	 {
 #ifdef COLORTABLE_DEBUG
@@ -2209,14 +2208,12 @@ static void image_colortable_add(INT32 args)
       struct neo_colortable *ct2;
       struct image *img;
 
-      if ((ct2=(struct neo_colortable*)
-	   get_storage(sp[-args].u.object,image_colortable_program)))
+      if ((ct2=get_storage(sp[-args].u.object,image_colortable_program)))
       {
 	 /* just copy that colortable */
 	 _img_copy_colortable(THIS,ct2);
       }
-      else if ((img=(struct image*)
-		get_storage(sp[-args].u.object,image_program)))
+      else if ((img=get_storage(sp[-args].u.object,image_program)))
       {
 	 /* get colors from image */
 	 if (args>=2) 
@@ -2230,8 +2227,7 @@ static void image_colortable_add(INT32 args)
 
 		  o=clone_object(image_colortable_program,args-2);
 
-		  nct=(struct neo_colortable*)
-		     get_storage(o,image_colortable_program);
+		  nct=get_storage(o,image_colortable_program);
 
 		  if (!nct) abort();
 
@@ -2385,7 +2381,7 @@ void image_colortable_reduce(INT32 args)
       numcolors=1293791; /* a lot */
    
    o=clone_object_from_object(THISOBJ,0);
-   nct=(struct neo_colortable*)get_storage(o,image_colortable_program);
+   nct=get_storage(o,image_colortable_program);
    
    switch (nct->type = THIS->type)
    {
@@ -2437,7 +2433,7 @@ void image_colortable_reduce_fs(INT32 args)
       f_index(3);
    }
    push_object(o=clone_object(image_colortable_program,1));
-   nct=(struct neo_colortable*)get_storage(o,image_colortable_program);
+   nct=get_storage(o,image_colortable_program);
    
    for (i=0; i<nct->u.flat.numentries; i++)
       nct->u.flat.entries[i].weight=WEIGHT_NEEDED;
@@ -2467,13 +2463,12 @@ void image_colortable_operator_plus(INT32 args)
 
    ref_push_object(THISOBJ);
    o=clone_object_from_object(THISOBJ,1);
-   dest=(struct neo_colortable*)get_storage(o,image_colortable_program);
+   dest=get_storage(o,image_colortable_program);
 
    for (i=0; i<args; i++)
    {
       if (TYPEOF(sp[i-args]) == T_OBJECT &&
-	  (src=(struct neo_colortable*)
-	   get_storage(sp[i-args].u.object,image_colortable_program)))
+	  (src=get_storage(sp[i-args].u.object,image_colortable_program)))
       {
 	 tmpo=NULL;
       }
@@ -2483,8 +2478,7 @@ void image_colortable_operator_plus(INT32 args)
 	 struct svalue *sv=sp+i-args;
 	 push_svalue(sv);
 	 tmpo=clone_object(image_colortable_program,1);
-	 src=(struct neo_colortable*)
-	   get_storage(tmpo,image_colortable_program);
+	 src=get_storage(tmpo,image_colortable_program);
 	 if (!src) abort();
       }
       else {
@@ -2520,13 +2514,12 @@ void image_colortable_operator_minus(INT32 args)
 
    ref_push_object(THISOBJ);
    o=clone_object_from_object(THISOBJ,1);
-   dest=(struct neo_colortable*)get_storage(o,image_colortable_program);
+   dest=get_storage(o,image_colortable_program);
 
    for (i=0; i<args; i++)
       if (TYPEOF(sp[i-args]) == T_OBJECT)
       {
-	 src=(struct neo_colortable*)
-	    get_storage(sp[i-args].u.object,image_colortable_program);
+	 src=get_storage(sp[i-args].u.object,image_colortable_program);
 	 if (!src) 
 	 { 
 	    free_object(o); 
@@ -3545,7 +3538,7 @@ void image_colortable_map(INT32 args)
       if (args!=3) 
 	 Pike_error("illegal number of arguments to colortable->map()\n");
       o=clone_object(image_program,2);
-      img=(struct image*)get_storage(o,image_program);
+      img=get_storage(o,image_program);
       d=img->img;
       
       n=img->xsize*img->ysize;
@@ -3604,7 +3597,7 @@ void image_colortable_map(INT32 args)
    }
 
    if (TYPEOF(sp[-args]) != T_OBJECT ||
-       ! (src=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       ! (src=get_storage(sp[-args].u.object,image_program)))
       bad_arg_error("colortable->map",sp-args,args,1,"",sp+1-1-args,
 		"Bad argument 1 to colortable->map()\n");
 
@@ -3641,7 +3634,7 @@ void image_colortable_index_32bit(INT32 args)
    if (args<1)
       SIMPLE_TOO_FEW_ARGS_ERROR("Colortable.index",1);
    if (TYPEOF(sp[-args]) != T_OBJECT ||
-       ! (src=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       ! (src=get_storage(sp[-args].u.object,image_program)))
       SIMPLE_BAD_ARG_ERROR("Colortable.index",1,"image object");
 
    if (!src->img) 
@@ -4324,7 +4317,7 @@ void image_colortable_image(INT32 args)
    if (THIS->type==NCT_NONE)
       return;
 
-   img=(struct image*)get_storage(o,image_program);
+   img=get_storage(o,image_program);
    dest=img->img;
    
    if (THIS->type==NCT_CUBE)
diff --git a/src/modules/Image/encodings/_xpm.c b/src/modules/Image/encodings/_xpm.c
index 61d43e1b0440e104047b9e81a98fb5561df89a76..0d5ebe186a7c1a3c18b0fc4df014a27e75fd20e8 100644
--- a/src/modules/Image/encodings/_xpm.c
+++ b/src/modules/Image/encodings/_xpm.c
@@ -260,8 +260,8 @@ void f__xpm_write_rows( INT32 args )
   fprintf(stderr, ")\n");
 #endif /* 0 */
 
-  iimg = (struct image *)get_storage( img, image_program );
-  ialpha = (struct image *)get_storage( alpha, image_program );
+  iimg = get_storage( img, image_program );
+  ialpha = get_storage( alpha, image_program );
   if(!iimg || !ialpha)
     Pike_error("Expected images as arguments\n");
 
diff --git a/src/modules/Image/encodings/avs.c b/src/modules/Image/encodings/avs.c
index 20ff3d3785dea77f8629bdd095006d2d1660423f..1d8abe018b17692ef2826ddf667b508a502e479c 100644
--- a/src/modules/Image/encodings/avs.c
+++ b/src/modules/Image/encodings/avs.c
@@ -114,11 +114,11 @@ void image_avs_f_encode(INT32 args )
   rgb_group apix = {255, 255, 255};
   get_all_args( "encode", args, "%o.%o", &io, &ao);
   
-  if(!(i = (struct image *)get_storage( io, image_program)))
+  if(!(i = get_storage( io, image_program)))
     Pike_error("Wrong argument 1 to Image.AVS.encode\n");
 
   if(ao) {
-    if (!(a = (struct image *)get_storage( ao, image_program)))
+    if (!(a = get_storage( ao, image_program)))
       Pike_error("Wrong argument 2 to Image.AVS.encode\n");
     if ((a->xsize != i->xsize) || (a->ysize != i->ysize))
       Pike_error("Bad size for alpha channel to Image.AVS.encode.\n");
diff --git a/src/modules/Image/encodings/bmp.c b/src/modules/Image/encodings/bmp.c
index 98ee7390b0cdb8a0ff2017a25edde5a0301976c5..6c365f1de3dd24d7efc1d6858caaf048b445cdb3 100644
--- a/src/modules/Image/encodings/bmp.c
+++ b/src/modules/Image/encodings/bmp.c
@@ -186,13 +186,13 @@ void img_bmp_encode(INT32 args)
       SIMPLE_TOO_FEW_ARGS_ERROR("Image.BMP.encode",1);
 
    if (TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage(o=sp[-args].u.object,image_program)))
+       !(img=get_storage(o=sp[-args].u.object,image_program)))
       SIMPLE_BAD_ARG_ERROR("Image.BMP.encode",1,"image object");
 
    if (args>1) {
       if (TYPEOF(sp[1-args]) == T_OBJECT)
       {
-	 if (!(nct=(struct neo_colortable*)
+	 if (!(nct=
 	       get_storage(oc=sp[1-args].u.object,image_colortable_program)))
 	    SIMPLE_BAD_ARG_ERROR("Image.BMP.encode",2,"colortable object");
 	 add_ref(oc);
@@ -209,7 +209,7 @@ void img_bmp_encode(INT32 args)
 	 if (parameter(sp+1-args, colortable_string, &v))
 	 {
 	    if (TYPEOF(*v) != T_OBJECT  ||
-		!(nct=(struct neo_colortable*)
+		!(nct=
 		  get_storage(oc=v->u.object,image_colortable_program)))
 	       SIMPLE_BAD_ARG_ERROR("Image.BMP.encode",2,"colortable object at index \"colortable\"\n");
 	    add_ref(oc);
@@ -250,7 +250,7 @@ void img_bmp_encode(INT32 args)
 	    ref_push_object(o);
 	    push_int(1<<bpp);
 	    oc = clone_object(image_colortable_program, 2);
-	    if (!(nct=(struct neo_colortable*)
+	    if (!(nct=
 		  get_storage(oc, image_colortable_program))) {
 	      free_object(oc);
 	      Pike_error("Unexpected result from clone_object().\n");
@@ -279,7 +279,7 @@ void img_bmp_encode(INT32 args)
    apply(o,"mirrory",0);
    free_object(o);
    if (TYPEOF(sp[-1]) != T_OBJECT ||
-       !(img=(struct image*)get_storage(o=sp[-1].u.object,image_program))) {
+       !(img=get_storage(o=sp[-1].u.object,image_program))) {
       free_object(oc);
       Pike_error("Image.BMP.encode: weird result from ->mirrory()\n");
    }
@@ -739,7 +739,7 @@ void i_img_bmp__decode(INT32 args,int header_only)
 	 push_string(make_shared_binary_string((char *)s,(4<<bpp)));
 	 push_int(2);
 	 push_object(o=clone_object(image_colortable_program,2));
-	 nct=(struct neo_colortable*)get_storage(o,image_colortable_program);
+	 nct=get_storage(o,image_colortable_program);
 
 	 s+=(4<<bpp);
 	 len-=(4<<bpp);
@@ -752,7 +752,7 @@ void i_img_bmp__decode(INT32 args,int header_only)
 	 push_string(make_shared_binary_string((char *)s,(3<<bpp)));
 	 push_int(1);
 	 push_object(o=clone_object(image_colortable_program,2));
-	 nct=(struct neo_colortable*)get_storage(o,image_colortable_program);
+	 nct=get_storage(o,image_colortable_program);
 
 	 s+=(3<<bpp);
 	 len-=(3<<bpp);
@@ -766,7 +766,7 @@ void i_img_bmp__decode(INT32 args,int header_only)
    push_int(xsize);
    push_int(abs(ysize));
    push_object(o=clone_object(image_program,2));
-   img=(struct image*)get_storage(o,image_program);
+   img=get_storage(o,image_program);
    n++;
 
    j = int_from_32bit(os+10);
diff --git a/src/modules/Image/encodings/hrz.c b/src/modules/Image/encodings/hrz.c
index 6fbf21bfd12339e3a16ca44d5f37c435dbcfef03..16ea2ca53056f0521c2ad3c3aae6fc3d8d3123e7 100644
--- a/src/modules/Image/encodings/hrz.c
+++ b/src/modules/Image/encodings/hrz.c
@@ -82,7 +82,7 @@ void image_hrz_f_encode(INT32 args )
   int x,y;
   get_all_args( "encode", args, "%o", &io);
   
-  if(!(i = (struct image *)get_storage( io, image_program)))
+  if(!(i = get_storage( io, image_program)))
     Pike_error("Wrong argument 1 to Image.HRZ.encode\n");
   
   s = begin_shared_string( 256*240*3 );
diff --git a/src/modules/Image/encodings/ilbm.c b/src/modules/Image/encodings/ilbm.c
index 0db937b534b1c5da91e2c5afc4688922a8b3a81e..132fdf5664579d4646c6d631b98c857fccc4e33b 100644
--- a/src/modules/Image/encodings/ilbm.c
+++ b/src/modules/Image/encodings/ilbm.c
@@ -459,7 +459,7 @@ static void image_ilbm__decode(INT32 args)
   push_int(bmhd.w);
   push_int(bmhd.h);
   o=clone_object(image_program,2);
-  img=(struct image*)get_storage(o,image_program);
+  img=get_storage(o,image_program);
   push_object(o);
   n++;
 
@@ -468,7 +468,7 @@ static void image_ilbm__decode(INT32 args)
     push_int(bmhd.w);
     push_int(bmhd.h);
     o=clone_object(image_program,2);
-    alpha=(struct image*)get_storage(o,image_program);
+    alpha=get_storage(o,image_program);
     push_object(o);
     n++;
   }
@@ -521,7 +521,7 @@ static void image_ilbm__decode(INT32 args)
     }
     f_aggregate(DO_NOT_WARN((INT32)ncol));
     push_object(clone_object(image_colortable_program,1));
-    ctable=(struct neo_colortable*)get_storage(sp[-1].u.object,
+    ctable=get_storage(sp[-1].u.object,
 					       image_colortable_program);
     n++;
   }
@@ -750,18 +750,18 @@ static void image_ilbm_encode(INT32 args)
   get_all_args("encode", args, (args>1 && !UNSAFE_IS_ZERO(&sp[1-args])? "%o%m":"%o"),
 	       &imgo, &optm);
 
-  if((img=(struct image*)get_storage(imgo, image_program))==NULL)
+  if((img=get_storage(imgo, image_program))==NULL)
      Pike_error("Image.ILBM.encode: illegal argument 1\n");
 
   if(optm != NULL) {
     struct svalue *s;
     if((s = simple_mapping_string_lookup(optm, "alpha"))!=NULL && !UNSAFE_IS_ZERO(s))
       if(TYPEOF(*s) != T_OBJECT ||
-	 (alpha=(struct image*)get_storage(s->u.object, image_program))==NULL)
+	 (alpha=get_storage(s->u.object, image_program))==NULL)
 	Pike_error("Image.ILBM.encode: option (arg 2) \"alpha\" has illegal type\n");
     if((s=simple_mapping_string_lookup(optm, "palette"))!=NULL && !UNSAFE_IS_ZERO(s))
       if(TYPEOF(*s) != T_OBJECT ||
-	 (ct=(struct neo_colortable*)
+	 (ct=
 	  get_storage(s->u.object, image_colortable_program))==NULL)
 	Pike_error("Image.ILBM.encode: option (arg 2) \"palette\" has illegal type\n");
   }
diff --git a/src/modules/Image/encodings/pcx.c b/src/modules/Image/encodings/pcx.c
index 27b438653d3a542cb2016be530eb4b0e438b418c..71c805a79c922c1e804fe3b7debb476b38c45c7a 100644
--- a/src/modules/Image/encodings/pcx.c
+++ b/src/modules/Image/encodings/pcx.c
@@ -283,7 +283,7 @@ static struct object *low_pcx_decode( struct pike_string *data )
   push_int64(height);
 
   io = clone_object( image_program, 2 );
-  dest = ((struct image *)get_storage( io, image_program ))->img;
+  dest = ((struct image*)get_storage( io, image_program ))->img;
   SET_ONERROR(onerr, do_free_object, io );
   
   switch(pcx_header.bpp)
@@ -556,7 +556,7 @@ static int parameter_colortable(struct svalue *map,struct pike_string *what,
    struct svalue *v;
    v=low_mapping_string_lookup(map->u.mapping,what);
    if (!v || TYPEOF(*v) != T_OBJECT) return 0;
-   if( !(*p = (struct neo_colortable *)get_storage( v->u.object, image_colortable_program )))
+   if( !(*p = get_storage( v->u.object, image_colortable_program )))
      return 0;
    return 1;
 }
@@ -570,11 +570,11 @@ void image_pcx_encode( INT32 args )
 
   get_all_args( "Image.PCX.encode", args, "%o", &i );
 
-  if(!get_storage( i, image_program ))
+  if(TYPEOF(Pike_sp[-1]) != PIKE_T_OBJECT)
     Pike_error("Invalid object argument to Image.PCX.encode\n");
 
-  img = ((struct image *)get_storage( i, image_program ));
-  
+  img = get_storage( i, image_program );
+
   MEMSET(&c, 0, sizeof(c));
   c.hdpi = 150;
   c.vdpi = 150;
diff --git a/src/modules/Image/encodings/png.c b/src/modules/Image/encodings/png.c
index 52d6d0cc7f42edb1ad03cb588257ab2cbf8c96be..4dab16b146ed1b0e9ce560807d07659289d1dd43 100644
--- a/src/modules/Image/encodings/png.c
+++ b/src/modules/Image/encodings/png.c
@@ -1111,7 +1111,7 @@ static int _png_decode_idat(struct IHDR *ihdr, struct neo_colortable *ct,
 
   /* Create image object and leave it on the stack */
   push_object(clone_object(image_program,0));
-  img=(struct image*)get_storage(sp[-1].u.object,image_program);
+  img=get_storage(sp[-1].u.object,image_program);
   if (img->img) free(img->img); /* protect from memleak */
   img->xsize=ihdr->width;
   img->ysize=ihdr->height;
@@ -1121,7 +1121,7 @@ static int _png_decode_idat(struct IHDR *ihdr, struct neo_colortable *ct,
   if( wa1 )
   {
     push_object(clone_object(image_program,0));
-    img=(struct image*)get_storage(sp[-1].u.object,image_program);
+    img=get_storage(sp[-1].u.object,image_program);
     if (img->img) free(img->img); /* protect from memleak */
     img->xsize=ihdr->width;
     img->ysize=ihdr->height;
@@ -1180,7 +1180,7 @@ static void img_png_decode(INT32 args, int mode)
 	 case T_STRING:
 	    push_object(clone_object(image_colortable_program,1));
 
-	    ct=(struct neo_colortable*)get_storage(sp[-1].u.object,
+	    ct=get_storage(sp[-1].u.object,
 						   image_colortable_program);
 	    if (!ct)
 	       PIKE_ERROR("Image.PNG._decode",
@@ -1281,7 +1281,7 @@ static void img_png_decode(INT32 args, int mode)
 
 	    if (ihdr.type==3)
 	    {
-	       ct=(struct neo_colortable*)
+	       ct=
 		  get_storage(sp[-1].u.object,image_colortable_program);
 	       mapping_string_insert(m, param_palette, sp-1);
 	    }
@@ -1567,7 +1567,7 @@ static void image_png_encode(INT32 args)
      SIMPLE_TOO_FEW_ARGS_ERROR("Image.PNG.encode", 1);
 
    if (TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)
+       !(img=
 	 get_storage(sp[-args].u.object,image_program)))
      SIMPLE_BAD_ARG_ERROR("Image.PNG.encode", 1, "Image.Image");
 
@@ -1587,8 +1587,7 @@ static void image_png_encode(INT32 args)
       if( s )
       {
         if( TYPEOF(*s) == T_OBJECT &&
-            (alpha=(struct image*)
-             get_storage(s->u.object,image_program)) )
+            (alpha=get_storage(s->u.object,image_program)) )
         {
           if (alpha->xsize!=img->xsize ||
               alpha->ysize!=img->ysize)
@@ -1612,7 +1611,7 @@ static void image_png_encode(INT32 args)
 
       if (s && !(TYPEOF(*s) == T_INT && s->u.integer==0))
 	 if (TYPEOF(*s) != T_OBJECT ||
-	     !(ct=(struct neo_colortable*)
+	     !(ct=
 	       get_storage(s->u.object,image_colortable_program)))
 	   PIKE_ERROR("Image.PNG.encode",
 		      "Option (arg 2) \"palette\" has illegal type.\n",
diff --git a/src/modules/Image/encodings/pnm.c b/src/modules/Image/encodings/pnm.c
index 849fd2d642823e2f0aa9680c2593f8890a84a31c..7b641fcbd70ab5df80e6ad1ee3361773aa9ef17c 100644
--- a/src/modules/Image/encodings/pnm.c
+++ b/src/modules/Image/encodings/pnm.c
@@ -158,7 +158,7 @@ void img_pnm_decode(INT32 args)
    push_int(y);
 
    o=clone_object(image_program,2);
-   new=(struct image*)get_storage(o,image_program);
+   new=get_storage(o,image_program);
    if (!new) 
       Pike_error("Image.PNM.decode(): cloned image object isn't an image (internal)\n");
 
@@ -279,7 +279,7 @@ void img_pnm_encode_P1(INT32 args) /* ascii PBM */
    rgb_group *s;
 
    if (args<1 || TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       !(img=get_storage(sp[-args].u.object,image_program)))
       Pike_error("Image.PNM.encode_P1(): Illegal arguments\n");
    if (!img->img)
       Pike_error("Image.PNM.encode_P1(): Given image is empty\n");
@@ -321,7 +321,7 @@ void img_pnm_encode_P2(INT32 args) /* ascii PGM */
    struct object *o = NULL;
 
    if (args<1 || TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage((o=sp[-args].u.object),image_program)))
+       !(img=get_storage((o=sp[-args].u.object),image_program)))
       Pike_error("Image.PNM.encode_P2(): Illegal arguments\n");
    if (!img->img)
       Pike_error("Image.PNM.encode_P2(): Given image is empty\n");
@@ -361,7 +361,7 @@ void img_pnm_encode_P3(INT32 args) /* ascii PPM */
    struct object *o = NULL;
 
    if (args<1 || TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage((o=sp[-args].u.object),image_program)))
+       !(img=get_storage((o=sp[-args].u.object),image_program)))
       Pike_error("Image.PNM.encode_P3(): Illegal arguments\n");
    if (!img->img)
       Pike_error("Image.PNM.encode_P3(): Given image is empty\n");
@@ -401,7 +401,7 @@ void img_pnm_encode_P4(INT32 args) /* binary PBM */
    rgb_group *s;
 
    if (args<1 || TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       !(img=get_storage(sp[-args].u.object,image_program)))
       Pike_error("Image.PNM.encode_P4(): Illegal arguments\n");
    if (!img->img)
       Pike_error("Image.PNM.encode_P4(): Given image is empty\n");
@@ -446,7 +446,7 @@ void img_pnm_encode_P5(INT32 args) /* binary PGM */
    rgb_group *s;
 
    if (args<1 || TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       !(img=get_storage(sp[-args].u.object,image_program)))
       Pike_error("Image.PNM.encode_P5(): Illegal arguments\n");
    if (!img->img)
       Pike_error("Image.PNM.encode_P5(): Given image is empty\n");
@@ -477,7 +477,7 @@ void img_pnm_encode_P6(INT32 args)
    struct image *img=NULL;
 
    if (args<1 || TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       !(img=get_storage(sp[-args].u.object,image_program)))
       Pike_error("Image.PNM.encode_P6(): Illegal arguments\n");
    if (!img->img)
       Pike_error("Image.PNM.encode_P6(): Given image is empty\n");
@@ -517,7 +517,7 @@ void img_pnm_encode_ascii(INT32 args)
    void (*func)(INT32);
 
    if (args<1 || TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       !(img=get_storage(sp[-args].u.object,image_program)))
       Pike_error("Image.PNM.encode_ascii(): Illegal arguments\n");
    if (!img->img)
       Pike_error("Image.PNM.encode_ascii(): Given image is empty\n");
@@ -550,7 +550,7 @@ void img_pnm_encode_binary(INT32 args)
    void (*func)(INT32);
 
    if (args<1 || TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       !(img=get_storage(sp[-args].u.object,image_program)))
       Pike_error("Image.PNM.encode_binary(): Illegal arguments\n");
    if (!img->img)
       Pike_error("Image.PNM.encode_binary(): Given image is empty\n");
diff --git a/src/modules/Image/encodings/psd.c b/src/modules/Image/encodings/psd.c
index 1822c2075f44e9f703d19e9d70d7fe856ad84ed1..bf32fa79617a940acd9398bb666349f7f3e15422 100644
--- a/src/modules/Image/encodings/psd.c
+++ b/src/modules/Image/encodings/psd.c
@@ -392,7 +392,7 @@ static void f_decode_image_channel( INT32 args )
   source = (unsigned char *)s->str;
   push_int( w ); push_int( h );
   io = clone_object( image_program, 2 );
-  dst = ((struct image *)get_storage(io,image_program))->img;
+  dst = ((struct image*)get_storage(io,image_program))->img;
   for(y=0; y<w*h; y++)
   {
     dst->r = dst->g = dst->b = *(source++);
@@ -434,7 +434,7 @@ static void f_decode_image_data( INT32 args )
   source4 = source+w*h*3;
   push_int( w ); push_int( h );
   io = clone_object( image_program, 2 );
-  dst = ((struct image *)get_storage(io,image_program))->img;
+  dst = ((struct image*)get_storage(io,image_program))->img;
   for(y=0; y<w*h; y++)
   {
     switch( d )
@@ -777,7 +777,7 @@ static void f_apply_cmap( INT32 args )
   get_all_args( "apply_cmap", args, "%o%S", &io, &cmap );
   if(cmap->len < 256*3)
     Pike_error("Invalid colormap resource\n");
-  if(!(i = (struct image *)get_storage( io, image_program )))
+  if(!(i = get_storage( io, image_program )))
     Pike_error("Invalid image object\n");
   n = i->xsize * i->ysize;
   d = i->img;
diff --git a/src/modules/Image/encodings/pvr.c b/src/modules/Image/encodings/pvr.c
index 7c07a2ca542dc512ab89d727109af7d3d4fe578b..899d19b117971deb042d792f2ca8d959162bef87 100644
--- a/src/modules/Image/encodings/pvr.c
+++ b/src/modules/Image/encodings/pvr.c
@@ -585,14 +585,14 @@ void image_pvr_f_encode(INT32 args)
   get_all_args("Image.PVR.encode", args, (args>1 && !UNSAFE_IS_ZERO(&sp[1-args])?
 					  "%o%m":"%o"), &imgo, &optm);
 
-  if((img=(struct image*)get_storage(imgo, image_program))==NULL)
+  if((img=get_storage(imgo, image_program))==NULL)
     Pike_error("Image.PVR.encode: illegal argument 1\n");
 
   if(optm != NULL) {
     struct svalue *s;
     if((s = simple_mapping_string_lookup(optm, "alpha"))!=NULL && !UNSAFE_IS_ZERO(s))
       if(TYPEOF(*s) != T_OBJECT ||
-	 (alpha=(struct image*)get_storage(s->u.object, image_program))==NULL)
+	 (alpha=get_storage(s->u.object, image_program))==NULL)
 	Pike_error("Image.PVR.encode: option (arg 2) \"alpha\" has illegal type\n");
     if((s = simple_mapping_string_lookup(optm, "global_index"))!=NULL &&
        !IS_UNDEFINED(s)) {
@@ -1165,7 +1165,7 @@ void img_pvr_decode(INT32 args,int header_only)
      push_int(w);
      push_int(h);
      o=clone_object(image_program,2);
-     img=(struct image*)get_storage(o,image_program);
+     img=get_storage(o,image_program);
      push_object(o);
      n++;
 
@@ -1188,7 +1188,7 @@ void img_pvr_decode(INT32 args,int header_only)
        push_int(w);
        push_int(h);
        o=clone_object(image_program,2);
-       img=(struct image*)get_storage(o,image_program);
+       img=get_storage(o,image_program);
        push_object(o);
        n++;
        
diff --git a/src/modules/Image/encodings/ras.c b/src/modules/Image/encodings/ras.c
index c4cd35f061668718b991275877c97be2ec88ff9f..38874ac0d320c02ed28084ad45b4ec90b26c3d72 100644
--- a/src/modules/Image/encodings/ras.c
+++ b/src/modules/Image/encodings/ras.c
@@ -244,11 +244,11 @@ void img_ras_decode(INT32 args)
    push_int(rs.ras_width);
    push_int(rs.ras_height);
    o=clone_object(image_program,2);
-   img=(struct image*)get_storage(o,image_program);
+   img=get_storage(o,image_program);
    rgb=img->img;
    if(ctab != NULL) {
      struct neo_colortable *ctable =
-       (struct neo_colortable*)get_storage(ctab, image_colortable_program);
+       get_storage(ctab, image_colortable_program);
      if(ctable!=NULL && ctable->type==NCT_FLAT) {
        numcolors = ctable->u.flat.numentries;
        entries = ctable->u.flat.entries;
@@ -437,7 +437,7 @@ static void img_ras_encode(INT32 args)
 	       (args>1 && !UNSAFE_IS_ZERO(&sp[1-args])? "%o%m":"%o"),
 	       &imgo, &optm);
 
-  if((img=(struct image*)get_storage(imgo, image_program))==NULL)
+  if((img=get_storage(imgo, image_program))==NULL)
      Pike_error("Image.RAS.encode: illegal argument 1\n");
 
   if(optm != NULL) {
@@ -445,7 +445,7 @@ static void img_ras_encode(INT32 args)
 
     if((s=simple_mapping_string_lookup(optm, "palette"))!=NULL && !UNSAFE_IS_ZERO(s))
       if(TYPEOF(*s) != T_OBJECT ||
-	 (ct=(struct neo_colortable*)
+	 (ct=
 	  get_storage(s->u.object, image_colortable_program))==NULL)
 	Pike_error("Image.RAS.encode: option (arg 2) \"palette\" has illegal type\n");
   }
diff --git a/src/modules/Image/encodings/tga.c b/src/modules/Image/encodings/tga.c
index 0d71b3859c34145dc8713f21c7529b1acb606a62..c20fbd0b0d04f168434504171ecb5eadcb4365ac 100644
--- a/src/modules/Image/encodings/tga.c
+++ b/src/modules/Image/encodings/tga.c
@@ -584,14 +584,14 @@ static struct image_alpha ReadImage(struct buffer *fp, struct tga_header *hdr)
     push_int( width );
     push_int( height );
     i.io = clone_object( image_program, 2 );
-    i.img = (struct image*)get_storage(i.io,image_program);
+    i.img = get_storage(i.io,image_program);
     push_int( width );
     push_int( height );
     push_int( 255 );
     push_int( 255 );
     push_int( 255 );
     i.ao = clone_object( image_program, 5 );
-    i.alpha = (struct image*)get_storage(i.ao,image_program);
+    i.alpha = get_storage(i.ao,image_program);
 
     id = i.img->img;
     ad = i.alpha->img;
@@ -900,8 +900,7 @@ void image_tga_encode( INT32 args )
     Pike_error("Image.TGA.encode: too few arguments\n");
 
   if (TYPEOF(Pike_sp[-args]) != PIKE_T_OBJECT ||
-      !(img=(struct image*)
-        get_storage(Pike_sp[-args].u.object,image_program)))
+      !(img=get_storage(Pike_sp[-args].u.object,image_program)))
     Pike_error("Image.TGA.encode: illegal argument 1\n");
 
   if (!img->img)
@@ -918,8 +917,7 @@ void image_tga_encode( INT32 args )
     if (!(TYPEOF(Pike_sp[-1]) == PIKE_T_INT
           && SUBTYPEOF(Pike_sp[-1]) == NUMBER_UNDEFINED))
       if (TYPEOF(Pike_sp[-1]) != PIKE_T_OBJECT ||
-          !(alpha=(struct image*)
-            get_storage(Pike_sp[-1].u.object,image_program)))
+          !(alpha=get_storage(Pike_sp[-1].u.object,image_program)))
         Pike_error("Image.TGA.encode: option (arg 2) \"alpha\" has illegal type\n");
     pop_stack();
 
diff --git a/src/modules/Image/encodings/tim.c b/src/modules/Image/encodings/tim.c
index 9ba75e34a3472e81ad4a657a7e395a7f62508029..b2aac8ac2f12fd320a726c087b8daa1098ee8784 100644
--- a/src/modules/Image/encodings/tim.c
+++ b/src/modules/Image/encodings/tim.c
@@ -286,7 +286,7 @@ void img_tim_decode(INT32 args, int header_only)
     push_int(w);
     push_int(h);
     o=clone_object(image_program,2);
-    img=(struct image*)get_storage(o,image_program);
+    img=get_storage(o,image_program);
     push_object(o);
     n++;
     
@@ -297,7 +297,7 @@ void img_tim_decode(INT32 args, int header_only)
       push_int(w);
       push_int(h);
       o=clone_object(image_program,2);
-      img=(struct image*)get_storage(o,image_program);
+      img=get_storage(o,image_program);
       push_object(o);
       n++;
       
diff --git a/src/modules/Image/encodings/wbf.c b/src/modules/Image/encodings/wbf.c
index 53ba8b6c0027948b2f5a7e1b8b102c140b9ce4bb..6f1428e3952646c41fc094d48745017d6c382762 100644
--- a/src/modules/Image/encodings/wbf.c
+++ b/src/modules/Image/encodings/wbf.c
@@ -172,7 +172,7 @@ static void low_image_f_wbf_decode_type0( struct wbf_header *wh,
   push_int( wh->width );
   push_int( wh->height );
   io = clone_object( image_program, 2 );
-  i = (struct image*)get_storage(io,image_program);
+  i = get_storage(io,image_program);
   id = i->img;
 
   white.r = 255;
@@ -398,7 +398,7 @@ static void image_f_wbf_encode( int args )
     Pike_error("No image given to encode.\n");
 
   o = sp[-args].u.object;
-  i = (struct image*)get_storage(o,image_program);
+  i = get_storage(o,image_program);
   if(!i)
     Pike_error("Wrong type object argument\n");
   if( args == 2 )
diff --git a/src/modules/Image/encodings/x.c b/src/modules/Image/encodings/x.c
index 17b006f0416468e89fa3e97309b5938d4558107d..1ee33ae775ed47236ef1116671cf6aad75c76452 100644
--- a/src/modules/Image/encodings/x.c
+++ b/src/modules/Image/encodings/x.c
@@ -11,7 +11,7 @@
 **!	This submodule handles encoding and decoding of
 **!	the binary formats of X11.
 **!
-**!	
+**!
 **!
 **! see also: Image, Image.Image, Image.Colortable
 */
@@ -145,11 +145,11 @@ static void image_x_encode_truecolor(INT32 args)
       Pike_error("Image.X.encode_truecolor: too few arguments (expected 10 arguments)\n");
    
    if (TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       !(img=get_storage(sp[-args].u.object,image_program)))
       Pike_error("Image.X.encode_truecolor: illegal argument 1 (expected image object)\n");
    if (args>10)
       if (TYPEOF(sp[10-args]) != T_OBJECT ||
-	  !(nct=(struct neo_colortable*)
+	  !(nct=
 	    get_storage(sp[10-args].u.object,image_colortable_program)))
 	 Pike_error("Image.X.encode_truecolor: illegal argument 10 (expected colortable object)\n");
 	 
@@ -416,7 +416,7 @@ static void image_x_encode_truecolor_masks(INT32 args)
       Pike_error("Image.X.encode_truecolor_masks: illegal argument 1 (expected image object)\n");
 
    if (args>7)
-      if (TYPEOF(sp[7-args]) != T_OBJECT ||
+       if (TYPEOF(sp[7-args]) != T_OBJECT ||
 	  !get_storage(ct=sp[7-args].u.object,image_colortable_program))
 	 Pike_error("Image.X.encode_truecolor_masks: illegal argument 8 (expected colortable object)\n");
  
@@ -749,10 +749,10 @@ void image_x_encode_pseudocolor(INT32 args)
    if (!alignbits) alignbits=1;
 
    if (TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       !(img=get_storage(sp[-args].u.object,image_program)))
       Pike_error("Image.X.encode_pseudocolor: illegal argument 1 (expected image object)\n");
    if (TYPEOF(sp[4-args]) != T_OBJECT ||
-       !(nct=(struct neo_colortable*)
+       !(nct=
 	 get_storage(sp[4-args].u.object,image_colortable_program)))
       Pike_error("Image.X.encode_pseudocolor: illegal argument 4 (expected colortable object)\n");
 
@@ -832,7 +832,7 @@ static void image_x_decode_truecolor(INT32 args)
    if (args>12)
    {
       if (TYPEOF(sp[12-args]) != T_OBJECT ||
-	  !(nct=(struct neo_colortable*)
+	  !(nct=
 	    get_storage(sp[12-args].u.object,image_colortable_program)))
 	 Pike_error("Image.X.decode_truecolor: illegal argument 13, expected colortable\n");
       if (nct->type!=NCT_FLAT)
@@ -862,7 +862,7 @@ static void image_x_decode_truecolor(INT32 args)
       push_int(width);
       push_int(height);
       o=clone_object(image_program,2);
-      img=(struct image*)get_storage(o,image_program);
+      img=get_storage(o,image_program);
 
       d=img->img;
       n=width*height;
@@ -908,7 +908,7 @@ static void image_x_decode_truecolor(INT32 args)
       push_int(width);
       push_int(height);
       o=clone_object(image_program,2);
-      img=(struct image*)get_storage(o,image_program);
+      img=get_storage(o,image_program);
 
       if (nct)
       {
@@ -987,7 +987,7 @@ void image_x_decode_truecolor_masks(INT32 args)
       Pike_error("Image.X.decode_truecolor_masks: illegal argument 1 (expected image object)\n");
 
    if (args>9)
-      if (TYPEOF(sp[9-args]) != T_OBJECT ||
+       if (TYPEOF(sp[9-args]) != T_OBJECT ||
 	  !get_storage(ct=sp[9-args].u.object,image_colortable_program))
 	 Pike_error("Image.X.decode_truecolor_masks: illegal argument 8 (expected colortable object)\n");
  
@@ -1048,7 +1048,7 @@ void image_x_decode_pseudocolor(INT32 args)
       if (TYPEOF(sp[i-args]) != T_INT)
 	 Pike_error("Image.X.decode_pseudocolor: illegal argument %d\n",i+1);
    if (TYPEOF(sp[6-args]) != T_OBJECT ||
-       !(nct=(struct neo_colortable*)
+       !(nct=
 	 get_storage(ncto=sp[6-args].u.object,image_colortable_program)))
       Pike_error("Image.X.decode_pseudocolor: illegal argument 7\n");
 
@@ -1077,7 +1077,7 @@ void image_x_decode_pseudocolor(INT32 args)
       push_int(width);
       push_int(height);
       o=clone_object(image_program,2);
-      img=(struct image*)get_storage(o,image_program);
+      img=get_storage(o,image_program);
 
       d=img->img;
       n=width*height;
@@ -1107,7 +1107,7 @@ void image_x_decode_pseudocolor(INT32 args)
       push_int(width);
       push_int(height);
       o=clone_object(image_program,2);
-      img=(struct image*)get_storage(o,image_program);
+      img=get_storage(o,image_program);
 
       d=img->img;
       m=height;
@@ -1157,7 +1157,7 @@ void image_x_encode_bitmap(INT32 args)
       SIMPLE_TOO_FEW_ARGS_ERROR("Image.X.encode_bitmap",1);
 
    if (TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       !(img=get_storage(sp[-args].u.object,image_program)))
       SIMPLE_BAD_ARG_ERROR("Image.X.encode_bitmap",1,"image object");
 
    if (!img->img)
diff --git a/src/modules/Image/encodings/xbm.c b/src/modules/Image/encodings/xbm.c
index 291d0926dce7f71fe02110a9465d290608f559dd..fc21ca0ad83365c147aa0ebd34fd4bc2190ad272 100644
--- a/src/modules/Image/encodings/xbm.c
+++ b/src/modules/Image/encodings/xbm.c
@@ -115,7 +115,7 @@ static struct object *load_xbm( struct pike_string *data )
   push_int( width );
   push_int( height );
   io = clone_object( image_program, 2 );
-  dest = ((struct image *)get_storage(io, image_program))->img;
+  dest = ((struct image*)get_storage(io, image_program))->img;
   /* .. the code below asumes black if the read fails.. */
   for(y=0; y<height; y++)
   {
@@ -378,8 +378,7 @@ void image_xbm_encode( INT32 args )
     Pike_error("Image.XBM.encode: too few arguments\n");
    
   if (TYPEOF(Pike_sp[-args]) != PIKE_T_OBJECT ||
-      !(img=(struct image*)
-        get_storage(Pike_sp[-args].u.object,image_program)))
+      !(img=get_storage(Pike_sp[-args].u.object,image_program)))
     Pike_error("Image.XBM.encode: illegal argument 1\n");
    
   if (!img->img)
diff --git a/src/modules/Image/encodings/xcf.c b/src/modules/Image/encodings/xcf.c
index 606815cdb0bc0f5de5b1a0b363ef877004de96c5..135b8ecf639d3dd6d558ce117ed760268de2b453 100644
--- a/src/modules/Image/encodings/xcf.c
+++ b/src/modules/Image/encodings/xcf.c
@@ -1184,14 +1184,14 @@ void image_xcf_f__decode_tiles( INT32 args )
                 &io, &ao, &tiles, &rle, &bpp, &cmapo, &shrink, &rxs, &rys);
 
 
-  if( !(i = (struct image *)get_storage( io, image_program )))
+  if( !(i = get_storage( io, image_program )))
     Pike_error("Wrong type object argument 1 (image)\n");
 
-  if(ao && !(a = (struct image *)get_storage( ao, image_program )))
+  if(ao && !(a = get_storage( ao, image_program )))
     Pike_error("Wrong type object argument 2 (image)\n");
 
   if( cmapo &&
-      !(cmap=(struct neo_colortable *)get_storage(cmapo,
+      !(cmap=get_storage(cmapo,
                                                   image_colortable_program)))
     Pike_error("Wrong type object argument 4 (colortable)\n");
 
diff --git a/src/modules/Image/image.c b/src/modules/Image/image.c
index fe70c7a5798cad576288fc022bdb762ca8cd12f2..9da556be8ad6f694a65b4a998be6ff7ac2d81b32 100644
--- a/src/modules/Image/image.c
+++ b/src/modules/Image/image.c
@@ -603,7 +603,7 @@ void img_read_get_channel(int arg,char *name,INT32 args,
 	 *m=1;
 	 break;
       case T_OBJECT:
-	 img=(struct image*)get_storage(sp[arg-args-1].u.object,image_program);
+	 img=get_storage(sp[arg-args-1].u.object,image_program);
 	 if (!img) 
 	    Pike_error("create_method: argument %d (%s channel): "
 		  "not an image object\n",arg+1,name);
@@ -929,7 +929,7 @@ void image_create_method(INT32 args)
 
    /* on stack: "string" image */
    /* want: put that image in this, crap that image */
-   img=(struct image*)get_storage(sp[-1].u.object,image_program);
+   img=get_storage(sp[-1].u.object,image_program);
    THIS->img=img->img;
    img->img=NULL;
    pop_n_elems(2);
@@ -2065,7 +2065,7 @@ static void image_gradients(INT32 args)
    push_int(THIS->xsize);
    push_int(THIS->ysize);
    o=clone_object(image_program,2);
-   img=(struct image*)get_storage(o,image_program);
+   img=get_storage(o,image_program);
    d=img->img;
 
    if (args && TYPEOF(sp[-1]) == T_FLOAT)
@@ -2372,7 +2372,7 @@ void image_color(INT32 args)
       if (args>0 && TYPEOF(sp[-args]) == T_INT)
 	 rgb.r=rgb.b=rgb.g=sp[-args].u.integer;
       else if (args>0 && TYPEOF(sp[-args]) == T_OBJECT &&
-	       (cs = (struct color_struct *)get_storage(sp[-args].u.object,
+	       (cs =get_storage(sp[-args].u.object,
 							image_color_program)))
 	 rgb.r=cs->rgb.r,
 	 rgb.g=cs->rgb.g,
@@ -4014,7 +4014,7 @@ static void image_apply_curve_3( unsigned char curve[3][256] )
   push_int( THIS->xsize );
   push_int( THIS->ysize );
   o = clone_object( image_program, 2 );
-  d = ((struct image *)get_storage( o, image_program ))->img;
+  d = ((struct image*)get_storage( o, image_program ))->img;
   i = THIS->xsize*THIS->ysize;
   
   THREADS_ALLOW();
@@ -4037,7 +4037,7 @@ static void image_apply_curve_1( unsigned char curve[256] )
   push_int( THIS->xsize );
   push_int( THIS->ysize );
   o = clone_object( image_program, 2 );
-  d = ((struct image *)get_storage( o, image_program ))->img;
+  d = ((struct image*)get_storage( o, image_program ))->img;
   i = THIS->xsize*THIS->ysize;
   THREADS_ALLOW();
   for( ; i>0; i-- )
@@ -4057,7 +4057,7 @@ static void image_apply_curve_2( struct object *o,
 {
   int i;
   rgb_group *d;
-  d = ((struct image *)get_storage(o,image_program))->img;
+  d = ((struct image*)get_storage(o,image_program))->img;
   i = THIS->xsize*THIS->ysize;
 
   THREADS_ALLOW();
@@ -4161,7 +4161,7 @@ static void image_apply_curve( INT32 args )
          push_int( THIS->xsize );
          push_int( THIS->ysize );
          o = clone_object( image_program, 2 );
-         MEMCPY( ((struct image *)get_storage(o,image_program))->img, 
+         MEMCPY( ((struct image*)get_storage(o,image_program))->img, 
                  THIS->img, 
                  THIS->xsize*THIS->ysize*sizeof(rgb_group) );
        }
diff --git a/src/modules/Image/layers.c b/src/modules/Image/layers.c
index f65c7d64013a16d72b4fa29877aee1d7e306ea68..0b42f2725c1579e31cb0bb46f473f4e53f5d7d6c 100644
--- a/src/modules/Image/layers.c
+++ b/src/modules/Image/layers.c
@@ -734,8 +734,7 @@ static void image_layer_set_image(INT32 args)
 	    SIMPLE_BAD_ARG_ERROR("Image.Layer->set_image",1,
 				 "object(Image)|int(0)");
       }
-      else if ((img=(struct image*)
-		get_storage(Pike_sp[-args].u.object,image_program)))
+      else if ((img=get_storage(Pike_sp[-args].u.object,image_program)))
       {
 	 THIS->image=Pike_sp[-args].u.object;
 	 add_ref(THIS->image);
@@ -756,8 +755,7 @@ static void image_layer_set_image(INT32 args)
 	    SIMPLE_BAD_ARG_ERROR("Image.Layer->set_image",2,
 				 "object(Image)|int(0)");
       }
-      else if ((img=(struct image*)
-		get_storage(Pike_sp[1-args].u.object,image_program)))
+      else if ((img=get_storage(Pike_sp[1-args].u.object,image_program)))
       {
 	 if (THIS->img &&
 	     (img->xsize!=THIS->xsize ||
@@ -2939,7 +2937,7 @@ void image_lay(INT32 args)
    {
       if (TYPEOF(a->item[i]) == T_OBJECT)
       {
-	 if (!(l[j]=(struct layer*)get_storage(a->item[i].u.object,
+	 if (!(l[j]=get_storage(a->item[i].u.object,
 					       image_layer_program)))
 	    SIMPLE_BAD_ARG_ERROR("Image.lay",1,
 				 "array(Image.Layer|mapping)");
@@ -2949,7 +2947,7 @@ void image_lay(INT32 args)
 	 push_svalue(a->item+i);
 	 push_object(o=clone_object(image_layer_program,1));
 	 args++;
-	 l[j]=(struct layer*)get_storage(o,image_layer_program);
+	 l[j]=get_storage(o,image_layer_program);
       }
       else
 	 SIMPLE_BAD_ARG_ERROR("Image.lay",1,
@@ -3005,7 +3003,7 @@ void image_lay(INT32 args)
    push_int(ysize);
    push_object(o=clone_object(image_layer_program,2));
 
-   dest=(struct layer*)get_storage(o,image_layer_program);
+   dest=get_storage(o,image_layer_program);
    dest->xoffs=xoffset;
    dest->yoffs=yoffset;
 
@@ -3024,7 +3022,7 @@ void image_lay(INT32 args)
 static INLINE struct layer *push_new_layer(void)
 {
    push_object(clone_object(image_layer_program,0));
-   return (struct layer*)get_storage(Pike_sp[-1].u.object,image_layer_program);
+   return get_storage(Pike_sp[-1].u.object,image_layer_program);
 }
 
 static INLINE struct layer *clone_this_layer(void)
@@ -3118,7 +3116,7 @@ static void image_layer_crop(INT32 args)
       push_int(THIS->fill.b);
       f_call_function(8);
       if (TYPEOF(Pike_sp[-1]) != T_OBJECT ||
-	  !(img=(struct image*)get_storage(Pike_sp[-1].u.object,image_program)))
+	  !(img=get_storage(Pike_sp[-1].u.object,image_program)))
 	 Pike_error("No image returned from image->copy\n");
       if (img->xsize!=xz || img->ysize!=yz)
 	 Pike_error("Image returned from image->copy had "
@@ -3147,7 +3145,7 @@ static void image_layer_crop(INT32 args)
       push_int(THIS->fill_alpha.b);
       f_call_function(8);
       if (TYPEOF(Pike_sp[-1]) != T_OBJECT ||
-	  !(img=(struct image*)get_storage(Pike_sp[-1].u.object,image_program)))
+	  !(img=get_storage(Pike_sp[-1].u.object,image_program)))
 	 Pike_error("No image returned from alpha->copy\n");
       if (img->xsize!=xz || img->ysize!=yz)
 	 Pike_error("Image returned from alpha->copy had "
diff --git a/src/modules/Image/match.h b/src/modules/Image/match.h
index d6ceb9f187ee064f1dbd76d507b92f955af7134d..0ac99d6e281dd174b45184581819d212f75cb233 100644
--- a/src/modules/Image/match.h
+++ b/src/modules/Image/match.h
@@ -58,8 +58,7 @@ void INAME(INT32 args)
 	Pike_error("Illegal argument 1 to image->"NAME"\n");
 
       if ((TYPEOF(sp[1-args]) != T_OBJECT)
-	  || !(needle=
-	       (struct image*)get_storage(sp[1-args].u.object,image_program)))
+	  || !(needle=get_storage(sp[1-args].u.object,image_program)))
 	Pike_error("Illegal argument 2 to image->"NAME"()\n");
 
       if ((needle->xsize>haystack->xsize)||
@@ -73,8 +72,7 @@ void INAME(INT32 args)
       else
 	{
 	  if ((TYPEOF(sp[2-args]) != T_OBJECT) ||
-		   !(haystack_cert=
-		     (struct image*)get_storage(sp[2-args].u.object,image_program)))
+		   !(haystack_cert=get_storage(sp[2-args].u.object,image_program)))
 	    Pike_error("Illegal argument 3 to image->"NAME"()\n");
 	  else
 	    if ((haystack->xsize!=haystack_cert->xsize)||
@@ -89,8 +87,7 @@ void INAME(INT32 args)
 	      haystack_cert=0;
 	    }
 	  else if ((TYPEOF(sp[3-args]) != T_OBJECT) ||
-		   !(needle_cert=
-		     (struct image*)get_storage(sp[3-args].u.object,image_program)))
+		   !(needle_cert=get_storage(sp[3-args].u.object,image_program)))
 	    Pike_error("Illegal argument 4 to image->"NAME"()\n");
 	  else
 	    {
@@ -109,8 +106,7 @@ void INAME(INT32 args)
 	      else 
 		Pike_error("Illegal argument 6 to image->"NAME"()\n");
 	      if ((TYPEOF(sp[4-args]) != T_OBJECT) ||
-		  !(haystack_avoid=
-		    (struct image*)get_storage(sp[4-args].u.object,image_program)))
+		  !(haystack_avoid=get_storage(sp[4-args].u.object,image_program)))
 		Pike_error("Illegal argument 5 to image->"NAME"()\n");
 	      else
 		if ((haystack->xsize!=haystack_avoid->xsize)||
@@ -121,7 +117,7 @@ void INAME(INT32 args)
       push_int(this->xsize);
       push_int(this->ysize);
       o=clone_object(image_program,2);
-      img=(struct image*)get_storage(o,image_program);
+      img=get_storage(o,image_program);
       imgi=img->img;
 
 
diff --git a/src/modules/Image/operator.c b/src/modules/Image/operator.c
index 66b4bc15680e3e146b6763fa1b50c865f06ce06c..daeb9fe72872758f8c8d26f68b4a89ebb56020f5 100644
--- a/src/modules/Image/operator.c
+++ b/src/modules/Image/operator.c
@@ -582,7 +582,7 @@ void image_operator_equal(INT32 args)
    else
    {
       if (TYPEOF(sp[-args]) != T_OBJECT
-       || !(oper=(struct image*)get_storage(sp[-args].u.object,image_program))) {
+       || !(oper=get_storage(sp[-args].u.object,image_program))) {
 	/* `== must be able to compare anything with anything -
 	 * shouldn't throw an error here. */
 	pop_n_elems (args);
@@ -668,7 +668,7 @@ void image_operator_lesser(INT32 args)
    {
       if (args<1 || TYPEOF(sp[-args]) != T_OBJECT
        || !sp[-args].u.object
-       || !(oper=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       || !(oper=get_storage(sp[-args].u.object,image_program)))
 	 Pike_error("image->`<: illegal argument 2\n");
 
       if (!oper->img)
@@ -743,7 +743,7 @@ void image_operator_greater(INT32 args)
    {
       if (args<1 || TYPEOF(sp[-args]) != T_OBJECT
        || !sp[-args].u.object
-       || !(oper=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       || !(oper=get_storage(sp[-args].u.object,image_program)))
 	 Pike_error("image->`>: illegal argument 2\n");
 
       if (!oper->img)
diff --git a/src/modules/Image/orient.c b/src/modules/Image/orient.c
index 6a7b3e008ec1b798f3eb02ee2d4bad28a63e8b12..c26d3add6756232f02565d77d31514a297bed50a 100644
--- a/src/modules/Image/orient.c
+++ b/src/modules/Image/orient.c
@@ -111,7 +111,7 @@ static void _image_orient(struct image *source,
       push_int(source->xsize);
       push_int(source->ysize);
       o[i]=clone_object(image_program,2);
-      img[i]=(struct image*)get_storage(o[i],image_program);
+      img[i]=get_storage(o[i],image_program);
       push_object(o[i]);
    }
 
@@ -207,12 +207,12 @@ void image_orient(INT32 args)
 	Pike_error("The images in the array given as argument 2 to image->orient have different sizes\n");
     }
     for(i=0; i<4; i++) 
-      img[i]=(struct image*)sp[1-args].u.array->item[i].u.object->storage;
+        img[i]=get_storage(sp[1-args].u.array->item[i].u.object,image_program);
     pop_n_elems(args);
     push_int(this->xsize);
     push_int(this->ysize);
     o[4]=clone_object(image_program,2);
-    img[4]=(struct image*)get_storage(o[4],image_program);
+    img[4]=get_storage(o[4],image_program);
     push_object(o[4]);
     w=1;
   }
diff --git a/src/modules/Image/pattern.c b/src/modules/Image/pattern.c
index 6a4a0e2303ba3887532bbc4dabe39251d4370c21..bba9b1c8b50d2c9a52af2782cec9e5c8a1bff6ff 100644
--- a/src/modules/Image/pattern.c
+++ b/src/modules/Image/pattern.c
@@ -531,7 +531,7 @@ void image_random(INT32 args)
    push_int(THIS->xsize);
    push_int(THIS->ysize);
    o=clone_object(image_program,2);
-   img=(struct image*)get_storage(o,image_program);
+   img=get_storage(o,image_program);
    d=img->img;
    if (args) f_random_seed(args);
 
@@ -561,7 +561,7 @@ void image_randomgrey(INT32 args)
    push_int(THIS->xsize);
    push_int(THIS->ysize);
    o=clone_object(image_program,2);
-   img=(struct image*)get_storage(o,image_program);
+   img=get_storage(o,image_program);
    d=img->img;
    if (args) f_random_seed(args);
 
diff --git a/src/modules/Image/phase.h b/src/modules/Image/phase.h
index 9711f90db55979f7c803ddcaeb1a20b90470a4c4..a0ff3035332d4a8868e021d1e82d854ecbf8f838 100644
--- a/src/modules/Image/phase.h
+++ b/src/modules/Image/phase.h
@@ -28,7 +28,7 @@ void IMAGE_PHASE(INT32 args)
   push_int(this->xsize);
   push_int(this->ysize);
   o=clone_object(image_program,2);
-  img=(struct image*)get_storage(o,image_program);
+  img=get_storage(o,image_program);
   imgi=img->img;
 
   pop_n_elems(args);
diff --git a/src/modules/Image/search.c b/src/modules/Image/search.c
index d922452d337158f0b1eb0f77c3603ee0835b5cc9..8cd1c4443dc2d66993346183b3df5da5089c6a50 100644
--- a/src/modules/Image/search.c
+++ b/src/modules/Image/search.c
@@ -267,7 +267,7 @@ void image_make_ascii(INT32 args)
 	       &tlevel, &xchar_size, &ychar_size);
 
   for(i=0; i<4; i++) {
-    img[i]=(struct image*)get_storage(objs[i],image_program);
+    img[i]=get_storage(objs[i],image_program);
     if(!img[i])
       SIMPLE_BAD_ARG_ERROR("make_ascii",i+1,"Image.Image");
     if(i!=0 &&
diff --git a/src/modules/Java/jvm.c b/src/modules/Java/jvm.c
index 468c58814b655f032403d8de36728cf2b7465500..a9486c381bac52d0dea0241f1ed2c946969d963b 100644
--- a/src/modules/Java/jvm.c
+++ b/src/modules/Java/jvm.c
@@ -140,7 +140,7 @@ struct att_storage {
 
 
 #define THIS_JVM ((struct jvm_storage *)(Pike_fp->current_storage))
-#define THAT_JOBJ(o) ((struct jobj_storage *)get_storage((o),jobj_program))
+#define THAT_JOBJ(o) (get_storage((o),jobj_program))
 #define THIS_JOBJ ((struct jobj_storage *)(Pike_fp->current_storage))
 #define THIS_JARRAY ((struct jarray_storage *)(Pike_fp->current_storage+jarray_stor_offs))
 #define THIS_METHOD ((struct method_storage *)(Pike_fp->current_storage))
@@ -192,8 +192,7 @@ static const char *pike_jni_error(jint errcode)
 
 static JNIEnv *jvm_procure_env(struct object *jvm)
 {
-  struct jvm_storage *j =
-    (struct jvm_storage *)get_storage(jvm, jvm_program);
+  struct jvm_storage *j = get_storage(jvm, jvm_program);
   if(j) {
 
 #ifdef _REENTRANT
@@ -307,8 +306,7 @@ static void push_java_anyobj(jobject o, struct object *jvm, JNIEnv *env)
 {
   struct object *oo;
   struct jobj_storage *jo;
-  struct jvm_storage *j =
-    (struct jvm_storage *)get_storage(jvm, jvm_program);
+  struct jvm_storage *j = get_storage(jvm, jvm_program);
   jobject o2;
 
   if((!j)||(!o)) {
@@ -379,8 +377,7 @@ static void jobj_gc_recurse(struct object *o)
 static void f_jobj_cast(INT32 args)
 {
   struct jobj_storage *jo = THIS_JOBJ;
-  struct jvm_storage *j =
-    (struct jvm_storage *)get_storage(jo->jvm, jvm_program);
+  struct jvm_storage *j = get_storage(jo->jvm, jvm_program);
   JNIEnv *env;
   jstring jstr;
 
@@ -423,7 +420,7 @@ static void f_jobj_eq(INT32 args)
   jboolean res;
 
   if(args<1 || TYPEOF(Pike_sp[-args]) != PIKE_T_OBJECT ||
-     (jo2 = (struct jobj_storage *)get_storage(Pike_sp[-args].u.object,
+     (jo2 = get_storage(Pike_sp[-args].u.object,
 					       jobj_program))==NULL) {
     pop_n_elems(args);
     push_int(0);
@@ -444,8 +441,7 @@ static void f_jobj_hash(INT32 args)
 {
   struct jobj_storage *jo = THIS_JOBJ;
   JNIEnv *env;
-  struct jvm_storage *j =
-    (struct jvm_storage *)get_storage(jo->jvm, jvm_program);
+  struct jvm_storage *j = get_storage(jo->jvm, jvm_program);
 
   pop_n_elems(args);
   if((env=jvm_procure_env(jo->jvm))) {
@@ -464,7 +460,7 @@ static void f_jobj_instance(INT32 args)
 
   get_all_args("Java.obj->is_instance_of()", args, "%o", &cls);
 
-  if((c = (struct jobj_storage *)get_storage(cls, jclass_program)) == NULL)
+  if((c = get_storage(cls, jclass_program)) == NULL)
     Pike_error("Bad argument 1 to is_instance_of().\n");
 
   if((env=jvm_procure_env(jo->jvm))) {
@@ -560,7 +556,7 @@ static void f_method_create(INT32 args)
 
   get_all_args("Java.method->create()", args, "%S%S%o", &name, &sig, &class);
 
-  if((c = (struct jobj_storage *)get_storage(class, jclass_program)) == NULL)
+  if((c = get_storage(class, jclass_program)) == NULL)
     Pike_error("Bad argument 3 to create().\n");
 
   if((env = jvm_procure_env(c->jvm))==NULL) {
@@ -748,7 +744,7 @@ static void make_jargs(jvalue *jargs, INT32 args, char *dorelease, char *sig,
       break;
     case PIKE_T_OBJECT:
       if(*sig=='[') {
-	if(!(jo=(struct jobj_storage *)get_storage(sv->u.object,jobj_program)))
+	if(!(jo=get_storage(sv->u.object,jobj_program)))
 	  jargs_error(jvm, env);
 	else {
 	  if(i+1<args) {
@@ -760,7 +756,7 @@ static void make_jargs(jvalue *jargs, INT32 args, char *dorelease, char *sig,
 	}
       } else {
 	if(*sig++!='L' ||
-	   !(jo=(struct jobj_storage *)get_storage(sv->u.object,jobj_program)))
+	   !(jo=get_storage(sv->u.object,jobj_program)))
 	  jargs_error(jvm, env);
 	else {
 	  if(i+1<args)
@@ -925,7 +921,7 @@ static void f_call_virtual(INT32 args)
     Pike_error("wrong number of arguments for method.\n");
 
   if(TYPEOF(Pike_sp[-args]) != PIKE_T_OBJECT ||
-     (jo = (struct jobj_storage *)get_storage(Pike_sp[-args].u.object,
+     (jo = get_storage(Pike_sp[-args].u.object,
 					      jobj_program))==NULL)
     Pike_error("Bad argument 1 to `().\n");
 
@@ -1037,7 +1033,7 @@ static void f_call_nonvirtual(INT32 args)
     Pike_error("wrong number of arguments for method.\n");
 
   if(TYPEOF(Pike_sp[-args]) != PIKE_T_OBJECT ||
-     (jo = (struct jobj_storage *)get_storage(Pike_sp[-args].u.object,
+     (jo = get_storage(Pike_sp[-args].u.object,
 					      jobj_program))==NULL)
     Pike_error("Bad argument 1 to call_nonvirtual.\n");
 
@@ -1189,7 +1185,7 @@ static void f_field_create(INT32 args)
   } else
     get_all_args("Java.field->create()", args, "%S%S%o", &name, &sig, &class);
 
-  if((c = (struct jobj_storage *)get_storage(class, jclass_program)) == NULL)
+  if((c = get_storage(class, jclass_program)) == NULL)
     Pike_error("Bad argument 3 to create().\n");
 
   f->field = 0;
@@ -1241,7 +1237,7 @@ static void f_field_set(INT32 args)
     Pike_error("Incorrect number of arguments to set.\n");
 
   if(TYPEOF(Pike_sp[-args]) != PIKE_T_OBJECT ||
-     (jo = (struct jobj_storage *)get_storage(Pike_sp[-args].u.object,
+     (jo = get_storage(Pike_sp[-args].u.object,
 					      jobj_program))==NULL)
     Pike_error("Bad argument 1 to set.\n");
 
@@ -1301,7 +1297,7 @@ static void f_field_get(INT32 args)
   struct jobj_storage *jo;
 
   if(TYPEOF(Pike_sp[-args]) != PIKE_T_OBJECT ||
-     (jo = (struct jobj_storage *)get_storage(Pike_sp[-args].u.object,
+     (jo = get_storage(Pike_sp[-args].u.object,
 					      jobj_program))==NULL)
     Pike_error("Bad argument 1 to get.\n");
 
@@ -2270,8 +2266,7 @@ static void make_java_exception(struct object *jvm, JNIEnv *env,
 {
   union anything *a;
   struct generic_error_struct *gen_err;
-  struct jvm_storage *j =
-    (struct jvm_storage *)get_storage(jvm, jvm_program);
+  struct jvm_storage *j = get_storage(jvm, jvm_program);
 
   if(!j)
     return;
@@ -2588,7 +2583,7 @@ static void f_natives_create(INT32 args)
 
   get_all_args("Java.natives->create()", args, "%a%o", &arr, &cls);
 
-  if((c = (struct jobj_storage *)get_storage(cls, jclass_program)) == NULL)
+  if((c = get_storage(cls, jclass_program)) == NULL)
     Pike_error("Bad argument 2 to create().\n");
 
   if(n->num_methods)
@@ -2669,7 +2664,7 @@ static void f_is_assignable_from(INT32 args)
   jboolean iaf;
 
   if(args<1 || TYPEOF(Pike_sp[-args]) != PIKE_T_OBJECT ||
-     (jc = (struct jobj_storage *)get_storage(Pike_sp[-args].u.object,
+     (jc = get_storage(Pike_sp[-args].u.object,
 					      jclass_program))==NULL)
     Pike_error("illegal argument 1 to is_assignable_from\n");
 
@@ -2686,8 +2681,7 @@ static void f_is_assignable_from(INT32 args)
 static void f_throw_new(INT32 args)
 {
   struct jobj_storage *jo = THIS_JOBJ;
-  struct jvm_storage *jj =
-    (struct jvm_storage *)get_storage(jo->jvm, jvm_program);
+  struct jvm_storage *jj = get_storage(jo->jvm, jvm_program);
   JNIEnv *env;
   char *cn;
 
@@ -2728,8 +2722,7 @@ static void f_alloc(INT32 args)
 static void f_new_array(INT32 args)
 {
   struct jobj_storage *jo = THIS_JOBJ;
-  struct jvm_storage *j =
-    (struct jvm_storage *)get_storage(jo->jvm, jvm_program);
+  struct jvm_storage *j = get_storage(jo->jvm, jvm_program);
   struct object *o;
   JNIEnv *env;
   jvalue i;
@@ -2885,7 +2878,7 @@ static void javaarray_subarray(struct object *jvm, struct object *oo,
   jclass jocls, eltcls;
   struct jvm_storage *j;
 
-  if((j = (struct jvm_storage *)get_storage(jvm, jvm_program))==NULL) {
+  if((j = get_storage(jvm, jvm_program))==NULL) {
     push_int(0);
     return;
   }
@@ -3244,8 +3237,7 @@ static void exit_att_struct(struct object *o)
   struct att_storage *att = THIS_ATT;
 
   if(att->jvm) {
-    struct jvm_storage *j =
-      (struct jvm_storage *)get_storage(att->jvm, jvm_program);
+    struct jvm_storage *j = get_storage(att->jvm, jvm_program);
     if(att->env) {
       THREAD_T me = th_self();
       if(!th_equal(me, att->tid))
@@ -3288,7 +3280,7 @@ static void f_att_create(INT32 args)
 
   get_all_args("Java.attachment->create()", args, "%o", &j);
 
-  if((jvm = (struct jvm_storage *)get_storage(j, jvm_program))==NULL)
+  if((jvm = get_storage(j, jvm_program))==NULL)
     Pike_error("Bad argument 1 to create().\n");
 
   att->jvm = j;
@@ -3362,7 +3354,7 @@ static void f_monitor_create(INT32 args)
 
   get_all_args("Java.monitor->create()", args, "%o", &obj);
 
-  if(get_storage(obj, jobj_program) == NULL)
+  if == NULL)
     Pike_error("Bad argument 1 to create().\n");
 
 #ifdef _REENTRANT
diff --git a/src/modules/Math/matrix_code.h b/src/modules/Math/matrix_code.h
index 1815d4947bf30189ec20521b61fa3bdaa88b3ff7..33efb9d66f7a80b5ce7f67f525d20c150e69d74e 100644
--- a/src/modules/Math/matrix_code.h
+++ b/src/modules/Math/matrix_code.h
@@ -222,8 +222,7 @@ done_made:
 	 /* "rotate",size,degrees,x,y,z */
 
 	 if (args>3 && TYPEOF(Pike_sp[3-args]) == T_OBJECT &&
-	     ((mx=(struct matrixX(_storage)*)
-	       get_storage(Pike_sp[-1].u.object,XmatrixY(math_,_program)))))
+	     ((mx=get_storage(Pike_sp[-1].u.object,XmatrixY(math_,_program)))))
 	 {
 	    if (mx->xsize*mx->ysize!=3)
 	       SIMPLE_BAD_ARG_ERROR(PNAME,4,"Matrix of size 1x3 or 3x1");
@@ -501,8 +500,7 @@ static void matrixX(_add)(INT32 args)
    }
 
    if (TYPEOF(Pike_sp[-1]) != T_OBJECT ||
-       !((mx=(struct matrixX(_storage)*)
-	  get_storage(Pike_sp[-1].u.object,XmatrixY(math_,_program)))))
+       !((mx=get_storage(Pike_sp[-1].u.object,XmatrixY(math_,_program)))))
       SIMPLE_BAD_ARG_ERROR("`+",1,"object(Math.Matrix)");
 
    if (mx->xsize != THIS->xsize || mx->ysize != THIS->ysize)
@@ -545,8 +543,7 @@ static void matrixX(_sub)(INT32 args)
       }
 
       if (TYPEOF(Pike_sp[-1]) != T_OBJECT ||
-	  !((mx=(struct matrixX(_storage)*)
-	     get_storage(Pike_sp[-1].u.object,XmatrixY(math_,_program)))))
+	  !((mx=get_storage(Pike_sp[-1].u.object,XmatrixY(math_,_program)))))
 	 SIMPLE_BAD_ARG_ERROR("`-",1,"object(Math.Matrix)");
 
       if (mx->xsize != THIS->xsize ||
@@ -679,8 +676,7 @@ scalar_mult:
    }
 	 
    if (TYPEOF(Pike_sp[-1]) != T_OBJECT ||
-       !((mx=(struct matrixX(_storage)*)
-	  get_storage(Pike_sp[-1].u.object,XmatrixY(math_,_program)))))
+       !((mx=get_storage(Pike_sp[-1].u.object,XmatrixY(math_,_program)))))
       SIMPLE_BAD_ARG_ERROR("`*",1,"object(Math.Matrix)");
 
    if (mx->xsize != THIS->ysize)
@@ -723,8 +719,7 @@ static void matrixX(_cross)(INT32 args)
    pop_n_elems(args-1); /* shouldn't be needed */
 
    if (TYPEOF(Pike_sp[-1]) != T_OBJECT ||
-       !((mx=(struct matrixX(_storage)*)
-	  get_storage(Pike_sp[-1].u.object,XmatrixY(math_,_program)))))
+       !((mx=get_storage(Pike_sp[-1].u.object,XmatrixY(math_,_program)))))
       SIMPLE_BAD_ARG_ERROR("cross",1,"object(Math.Matrix)");
 
    if (mx->xsize*mx->ysize != 3 ||
@@ -758,8 +753,7 @@ static void matrixX(_dot)(INT32 args)
   pop_n_elems(args-1); 
   
   if (TYPEOF(Pike_sp[-1]) != T_OBJECT ||
-      !((mx=(struct matrixX(_storage)*)
-	 get_storage(Pike_sp[-1].u.object,XmatrixY(math_,_program)))))
+      !((mx=get_storage(Pike_sp[-1].u.object,XmatrixY(math_,_program)))))
     SIMPLE_BAD_ARG_ERROR("dot_product",1,"object(Math.Matrix)");
   
   if(!(mx->xsize==THIS->xsize &&
@@ -795,8 +789,7 @@ static void matrixX(_convolve)(INT32 args)
       SIMPLE_TOO_FEW_ARGS_ERROR("convolve",1);
 
    if (TYPEOF(Pike_sp[-args]) != T_OBJECT ||
-       !((bmx=(struct matrixX(_storage)*)
-	  get_storage(Pike_sp[-args].u.object,XmatrixY(math_,_program)))))
+       !((bmx=get_storage(Pike_sp[-args].u.object,XmatrixY(math_,_program)))))
       SIMPLE_BAD_ARG_ERROR("convolve",1,"object(Math.Matrix)");
 
    if (bmx->xsize==0 || bmx->ysize==0 ||
diff --git a/src/modules/Mysql/mysql.c b/src/modules/Mysql/mysql.c
index 6344eb2ab2fd275c11d55b7252ea096cd447f1f5..2ddf128783affa5a0a25d61fcc23791171b5f9f9 100644
--- a/src/modules/Mysql/mysql.c
+++ b/src/modules/Mysql/mysql.c
@@ -1164,7 +1164,7 @@ static void low_query(INT32 args, char *name, int flags)
     }
 
     /* Set the result. */
-    if ((!(res = (struct precompiled_mysql_result *)
+    if ((!(res = 
 	   get_storage(o, mysql_result_program))) || res->result) {
       mysql_free_result(result);
       Pike_error("%s(): Bad mysql result object!\n", name);
@@ -1550,7 +1550,7 @@ static void f_list_dbs(INT32 args)
     push_object(o = clone_object(mysql_result_program, 1));
 
     /* Set the result. */
-    if ((!(res = (struct precompiled_mysql_result *)
+    if ((!(res = 
 	   get_storage(o, mysql_result_program))) || res->result) {
       mysql_free_result(result);
       Pike_error("Mysql.mysql->list_dbs(): Bad mysql result object!\n");
@@ -1624,7 +1624,7 @@ static void f_list_tables(INT32 args)
     push_object(o = clone_object(mysql_result_program, 1));
 
     /* Set the result. */
-    if ((!(res = (struct precompiled_mysql_result *)
+    if ((!(res = 
 	   get_storage(o, mysql_result_program))) || res->result) {
       mysql_free_result(result);
       Pike_error("Mysql.mysql->list_tables(): Bad mysql result object!\n");
@@ -1811,7 +1811,7 @@ static void f_list_processes(INT32 args)
     push_object(o = clone_object(mysql_result_program, 1));
 
     /* Set the result. */
-    if ((!(res = (struct precompiled_mysql_result *)
+    if ((!(res = 
 	   get_storage(o, mysql_result_program))) || res->result) {
       mysql_free_result(result);
       Pike_error("Mysql.mysql->list_processes(): Bad mysql result object!\n");
diff --git a/src/modules/Odbc/odbc_result.c b/src/modules/Odbc/odbc_result.c
index 04bb60258c45cfc0d8d29325da24ae463fd8aa34..9ad179aa010788aaed83a5b78ffd0b8b6fa90ead 100644
--- a/src/modules/Odbc/odbc_result.c
+++ b/src/modules/Odbc/odbc_result.c
@@ -385,7 +385,7 @@ static void f_create(INT32 args)
   }
   if ((TYPEOF(Pike_sp[-args]) != T_OBJECT) ||
       (!(PIKE_ODBC_RES->odbc =
-	 (struct precompiled_odbc *)get_storage(Pike_sp[-args].u.object,
+	 get_storage(Pike_sp[-args].u.object,
 						odbc_program)))) {
     Pike_error("Bad argument 1 to odbc_result()\n");
   }
diff --git a/src/modules/Parser/html.c b/src/modules/Parser/html.c
index ddaeb479c35353d6e0ab04038556965d9312f7f5..305f10324fa080d6f1454ce3d4b1f0eb477ec553 100644
--- a/src/modules/Parser/html.c
+++ b/src/modules/Parser/html.c
@@ -4807,7 +4807,7 @@ static void html_clone(INT32 args)
 
    push_object(o=clone_object_from_object(THISOBJ,args));
 
-   p=(struct parser_html_storage*)get_storage(o,parser_html_program);
+   p=get_storage(o,parser_html_program);
 
    if (p->maptag) free_mapping(p->maptag);
    add_ref(p->maptag=THIS->maptag);
diff --git a/src/modules/Postgres/pgresult.c b/src/modules/Postgres/pgresult.c
index b955d9285c326ea16a5b1cccabe148e75a22f0e8..6318be23b85e1d1a735f4c8ac33d1905df405eb8 100644
--- a/src/modules/Postgres/pgresult.c
+++ b/src/modules/Postgres/pgresult.c
@@ -170,7 +170,7 @@ static void f_create (INT32 args)
 {
 	char *storage;
 	check_all_args("postgres_result->create",args,BIT_OBJECT,0);
-	pgdebug("result->f_create(%d).\n",args);
+	pgdebug("result->f_create.\n",args);
 
 	storage=get_storage(Pike_sp[-args].u.object,postgres_program);
 	if (!storage)
diff --git a/src/modules/_Image_GIF/image_gif.c b/src/modules/_Image_GIF/image_gif.c
index f38a544c67762f252b95845ecc340cae932bbeb7..2dc40b64312c0c4e05827025042cc2e7b80280cd 100644
--- a/src/modules/_Image_GIF/image_gif.c
+++ b/src/modules/_Image_GIF/image_gif.c
@@ -211,7 +211,7 @@ void image_gif_header_block(INT32 args)
       globalpalette=0;
    }
    else if (TYPEOF(sp[2-args]) == T_OBJECT &&
-	    (nct=(struct neo_colortable*)
+	    (nct=
 	        get_storage(sp[2-args].u.object,image_colortable_program)))
    {
       numcolors=image_colortable_size(nct);
@@ -733,12 +733,12 @@ CHRONO("gif render_block begin");
    if (args<2) 
       Pike_error("Image.GIF.render_block(): Too few arguments\n");
    if (TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage(sp[-args].u.object,image_program)))
+       !(img=get_storage(sp[-args].u.object,image_program)))
       Pike_error("Image.GIF.render_block(): Illegal argument 1 (expected image object)\n");
    else if (!img->img)
       Pike_error("Image.GIF.render_block(): given image has no image\n");
    if (TYPEOF(sp[1-args]) != T_OBJECT ||
-       !(nct=(struct neo_colortable*)
+       !(nct=
   	     get_storage(sp[1-args].u.object,image_colortable_program)))
       Pike_error("Image.GIF.render_block(): Illegal argument 2 (expected colortable object)\n");
 
@@ -771,7 +771,7 @@ CHRONO("gif render_block begin");
    if (args>=6)
    {
       if (TYPEOF(sp[5-args]) == T_OBJECT &&
-	  (alpha=(struct image*)get_storage(sp[5-args].u.object,image_program)))
+	  (alpha=get_storage(sp[5-args].u.object,image_program)))
       {
 	 if (!alpha->img)
 	    Pike_error("Image.GIF.render_block(): given alpha channel has no image\n");
@@ -1033,7 +1033,7 @@ void _image_gif_encode(INT32 args,int fs)
       Pike_error("Image.GIF.encode(): Too few arguments\n");
 
    if (TYPEOF(sp[-args]) != T_OBJECT ||
-       !(img=(struct image*)get_storage(imgobj=sp[-args].u.object,
+       !(img=get_storage(imgobj=sp[-args].u.object,
 					image_program)))
       Pike_error("Image.GIF.encode(): Illegal argument 1 (expected image object)\n");
    add_ref(imgobj);
@@ -1050,7 +1050,7 @@ void _image_gif_encode(INT32 args,int fs)
 	    ref_push_object(imgobj);
 	    push_int(n);
 	    nctobj=clone_object(image_colortable_program,2);
-	    nct=(struct neo_colortable*)
+	    nct=
 	       get_storage(nctobj,image_colortable_program);
 	    if (!nct)
 	       Pike_error("Image.GIF.encode(): Internal error; colortable isn't colortable\n");
@@ -1060,7 +1060,7 @@ void _image_gif_encode(INT32 args,int fs)
       }
       else if (TYPEOF(sp[1-args]) != T_OBJECT)
 	 Pike_error("Image.GIF.encode(): Illegal argument 2 (expected image or colortable object or int)\n");
-      else if ((nct=(struct neo_colortable*)
+      else if ((nct=
 		get_storage(nctobj=sp[1-args].u.object,image_colortable_program)))
       {
 	add_ref(nctobj);
@@ -1074,7 +1074,7 @@ void _image_gif_encode(INT32 args,int fs)
    /* check transparency arguments */
    if (args-arg>0) {
       if (TYPEOF(sp[arg-args]) == T_OBJECT &&
-	  (alpha=(struct image*)
+	  (alpha=
 	   get_storage(alphaobj=sp[arg-args].u.object,image_program)))
       {
 	add_ref(alphaobj);
@@ -1121,7 +1121,7 @@ void _image_gif_encode(INT32 args,int fs)
 	    push_object(imgobj);
 	    push_int(256);
 	    nctobj=clone_object(image_colortable_program,2);
-	    nct=(struct neo_colortable*)
+	    nct=
 	       get_storage(nctobj,image_colortable_program);
 	    if (!nct)
 	       Pike_error("Image.GIF.encode(): Internal error; colortable isn't colortable\n");
@@ -1143,7 +1143,7 @@ void _image_gif_encode(INT32 args,int fs)
      ref_push_object(imgobj);
       if (alpha) push_int(255); else push_int(256);
       nctobj=clone_object(image_colortable_program,2);
-      nct=(struct neo_colortable*)
+      nct=
 	 get_storage(nctobj,image_colortable_program);
       if (!nct)
 	 Pike_error("Image.GIF.encode(): Internal error; colortable isn't colortable\n");
@@ -1670,7 +1670,7 @@ fprintf(stderr,"_gif_decode_lzw(%lx,%lu,%d,%lx,%lx,%lx,%lu,%d)\n",
 	s,len,obits,ncto,dest,alpha,dlen,tidx);
 #endif
 
-   nct=(struct neo_colortable*)get_storage(ncto,image_colortable_program);
+   nct=get_storage(ncto,image_colortable_program);
    if (!nct || nct->type!=NCT_FLAT) return; /* uh? */
 
    if (len<2) return;
@@ -1932,14 +1932,14 @@ void image_gif__decode(INT32 args)
 	       push_int(b->item[3].u.integer);
 	       push_int(b->item[4].u.integer);
 	       o=clone_object(image_program,2);
-	       img=(struct image*)get_storage(o,image_program);
+	       img=get_storage(o,image_program);
 	       push_object(o);
 	       if (transparency)
 	       {
 		  push_int(b->item[3].u.integer);
 		  push_int(b->item[4].u.integer);
 		  o2=clone_object(image_program,2);
-		  aimg=(struct image*)get_storage(o2,image_program);
+		  aimg=get_storage(o2,image_program);
 		  push_object(o2);
 		  if (lcto)
 		     _gif_decode_lzw((unsigned char *)
@@ -2092,11 +2092,11 @@ void image_gif_decode(INT32 args)
 	  && (b=a->item[n].u.array)->size==11
 	  && TYPEOF(b->item[0]) == T_INT 
 	  && b->item[0].u.integer==GIF_RENDER
-	  && TYPEOF(b->item[3]) == T_OBJECT
+          && TYPEOF(b->item[3]) == T_OBJECT
 	  && get_storage(b->item[3].u.object, image_program) )
       {
 	 if (TYPEOF(b->item[4]) == T_OBJECT)
-	    alpha=(struct image*)get_storage(b->item[4].u.object,
+	    alpha=get_storage(b->item[4].u.object,
 					     image_program);
 	 else
 	    alpha=NULL;
@@ -2178,11 +2178,11 @@ void image_gif_decode_layers(INT32 args)
 	  && (b=a->item[n].u.array)->size==11
 	  && TYPEOF(b->item[0]) == T_INT
 	  && b->item[0].u.integer==GIF_RENDER
-	  && TYPEOF(b->item[3]) == T_OBJECT
+          && TYPEOF(b->item[3]) == T_OBJECT
 	  && get_storage(b->item[3].u.object, image_program) )
       {
 	 if (TYPEOF(b->item[4]) == T_OBJECT)
-	    alpha=(struct image*)get_storage(b->item[4].u.object,
+	    alpha=get_storage(b->item[4].u.object,
 					     image_program);
 	 else
 	    alpha=NULL;
@@ -2311,7 +2311,7 @@ void image_gif__encode_render(INT32 args)
    {
       struct neo_colortable *nct;
 
-      nct=(struct neo_colortable*)
+      nct=
 	 get_storage(a->item[4].u.object,image_colortable_program);
       if (!nct)
       {
diff --git a/src/modules/_Image_JPEG/image_jpeg.c b/src/modules/_Image_JPEG/image_jpeg.c
index 00ce77556a40d6f11837a46118c0a47b1277b546..ffeb10e4a31cc218006af036f07c4f8b4f4bd4da 100644
--- a/src/modules/_Image_JPEG/image_jpeg.c
+++ b/src/modules/_Image_JPEG/image_jpeg.c
@@ -704,7 +704,7 @@ static void image_jpeg_encode(INT32 args)
    if (args<1
        || (TYPEOF(sp[-args]) != T_OBJECT && TYPEOF(sp[-args]) != T_STRING)
        || (TYPEOF(sp[-args]) == T_OBJECT &&
-	   !(img=(struct image*) get_storage(sp[-args].u.object,image_program)))
+	   !(img= get_storage(sp[-args].u.object,image_program)))
        || (args>1 && TYPEOF(sp[1-args]) != T_MAPPING))
       Pike_error("Image.JPEG.encode: Illegal arguments\n");
 
@@ -1156,7 +1156,7 @@ static void img_jpeg_decode(INT32 args,int mode)
       bytes_per_pixel = mds.cinfo.output_components;
 
       o=clone_object(image_program,0);
-      img=(struct image*)get_storage(o,image_program);
+      img=get_storage(o,image_program);
       if (!img) Pike_error("image no image? foo?\n"); /* should never happen */
       img->img=malloc(bytes_per_pixel *
 		      mds.cinfo.output_width*mds.cinfo.output_height);
diff --git a/src/modules/_Image_TIFF/image_tiff.c b/src/modules/_Image_TIFF/image_tiff.c
index cc25e0da5c93a52675704a0018bbe7a49cbe1d43..7cedc1158c206b2481fe2afaf607052537499551 100644
--- a/src/modules/_Image_TIFF/image_tiff.c
+++ b/src/modules/_Image_TIFF/image_tiff.c
@@ -277,7 +277,7 @@ void low_image_tiff_encode( struct buffer *buf,
   int x, y;
   char *b;
 
-  i = ((struct image *)get_storage(img->img,image_program));
+  i = (get_storage(img->img,image_program));
 
   if(!i)
     Pike_error("Image is not an image object.\n");
@@ -285,7 +285,7 @@ void low_image_tiff_encode( struct buffer *buf,
   if(img->alpha)
   {
     spp++;
-    a = ((struct image *)get_storage(img->alpha,image_program));
+    a = (get_storage(img->alpha,image_program));
     if(!a)
       Pike_error("Alpha is not an image object.\n");
     if(i->xsize != a->xsize ||
@@ -464,9 +464,9 @@ void low_image_tiff_decode( struct buffer *buf,
     push_int(w);
     push_int(h);
     res->alpha = clone_object(image_program, 2);
-    da = ((struct image *)get_storage(res->alpha,image_program))->img;
+    da = (get_storage(res->alpha,image_program))->img;
   }
-  di = ((struct image *)get_storage(res->img,image_program))->img;
+  di = (get_storage(res->img,image_program))->img;
   
   for(i=0; i<h*w; i++)
   {
diff --git a/src/modules/_Image_TTF/image_ttf.c b/src/modules/_Image_TTF/image_ttf.c
index 6c3aa38361eecc867fa8b8b42be4c41a5a2c162b..7e0f031adb58e7e4579dfc60c0713d9a925e16ba 100644
--- a/src/modules/_Image_TTF/image_ttf.c
+++ b/src/modules/_Image_TTF/image_ttf.c
@@ -267,8 +267,8 @@ static void image_ttf_make(INT32 args)
 */
 
 #define THISOBJ (Pike_fp->current_object)
-#define THISf ((struct image_ttf_face_struct*)get_storage(THISOBJ,image_ttf_face_program))
-#define THISi ((struct image_ttf_faceinstance_struct*)get_storage(THISOBJ,image_ttf_faceinstance_program))
+#define THISf (get_storage(THISOBJ,image_ttf_face_program))
+#define THISi (get_storage(THISOBJ,image_ttf_faceinstance_program))
 
 static void image_ttf_face_exit(struct object *o)
 {
@@ -682,7 +682,7 @@ static void image_ttf_faceinstance_create(INT32 args)
       Pike_error("Image.TTF.FaceInstance(): too few arguments\n");
 
    if (TYPEOF(sp[-args]) != T_OBJECT ||
-       !(face_s=(struct image_ttf_face_struct*)
+       !(face_s=
 	 get_storage(sp[-args].u.object,image_ttf_face_program)))
       Pike_error("Image.TTF.FaceInstance(): illegal argument 1\n");
 
@@ -712,7 +712,7 @@ static void image_ttf_faceinstance_set_height(INT32 args)
       Pike_error("Image.TTF.FaceInstance->set_height(): illegal argument 1\n");
    if (h<1) h=1;
 
-   if (!(face_s=(struct image_ttf_face_struct*)
+   if (!(face_s=
 	 get_storage(THISi->faceobj,image_ttf_face_program)))
       Pike_error("Image.TTF.FaceInstance->write(): lost Face\n");
 
@@ -835,7 +835,7 @@ static void image_ttf_faceinstance_ponder(INT32 args)
 
    int xmin=1000,xmax=-1000,pos=0;
 
-   if (!(face_s=(struct image_ttf_face_struct*)
+   if (!(face_s=
 	 get_storage(THISi->faceobj,image_ttf_face_program)))
       Pike_error("Image.TTF.FaceInstance->ponder(): lost Face\n");
 
@@ -989,7 +989,7 @@ static void image_ttf_faceinstance_write(INT32 args)
    unsigned char* pixmap;
    int maxcharwidth = 0;
 
-   if (!(face_s=(struct image_ttf_face_struct*)
+   if (!(face_s=
 	 get_storage(THISi->faceobj,image_ttf_face_program)))
       Pike_error("Image.TTF.FaceInstance->write(): lost Face\n");
 
@@ -1136,7 +1136,7 @@ static void image_ttf_faceinstance_write(INT32 args)
       push_int(width);
       push_int(height);
       o=clone_object(image_program,2);
-      img=(struct image*)get_storage(o,image_program);
+      img=get_storage(o,image_program);
       d=img->img;
 
       for (a=0; a<args; a++)
diff --git a/src/modules/_Image_XFace/image_xface.c b/src/modules/_Image_XFace/image_xface.c
index 0157852eeff49425d1443c20922d13273f56aded..8fdaa2e8241ec27464e1a119967ca397596b181c 100644
--- a/src/modules/_Image_XFace/image_xface.c
+++ b/src/modules/_Image_XFace/image_xface.c
@@ -401,7 +401,7 @@ static void image_xface_decode(INT32 args)
     Pike_error("Image.XFace.decode: Illegal arguments\n");
 
   o=clone_object(image_program,0);
-  img=(struct image*)get_storage(o,image_program);
+  img=get_storage(o,image_program);
   if (!img) Pike_error("image no image? foo?\n"); /* should never happen */
   img->img=malloc(sizeof(rgb_group)*48*48);
   if (!img->img) {
@@ -436,7 +436,7 @@ static void image_xface_encode(INT32 args)
 
   if (args<1 
       || TYPEOF(sp[-args]) != T_OBJECT
-      || !(img=(struct image*)
+      || !(img=
 	   get_storage(sp[-args].u.object,image_program))
       || (args>1 && TYPEOF(sp[1-args]) != T_MAPPING))
     Pike_error("Image.XFace.encode: Illegal arguments\n");
diff --git a/src/modules/_Stdio/file.c b/src/modules/_Stdio/file.c
index 9de978539cdae586ace18739d5c57144dde223ca..a8c5bd508fd63f3c780f2a36c12e0255a283026d 100644
--- a/src/modules/_Stdio/file.c
+++ b/src/modules/_Stdio/file.c
@@ -255,14 +255,14 @@ static struct my_file *get_file_storage(struct object *o)
     return ((struct my_file *)
 	    (o->storage + file_program->inherits->storage_offset));
 
-  if((f=(struct my_file *)get_storage(o,file_program)))
+  if((f=get_storage(o,file_program)))
     return f;
 
-  if((sval=(struct svalue *)get_storage(o,file_ref_program))) {
+  if((sval=get_storage(o,file_ref_program))) {
     if (TYPEOF(*sval) == PIKE_T_OBJECT) {
       ob = sval->u.object;
       /* FIXME: Use the subtype information! */
-      if(ob && (f=(struct my_file *)get_storage(ob, file_program)))
+      if(ob && (f=get_storage(ob, file_program)))
 	return f;
     }
   }
@@ -275,8 +275,7 @@ static void debug_check_internals (struct my_file *f)
 {
   size_t ev;
 
-  if (f->box.ref_obj->prog && file_program &&
-      !get_storage(f->box.ref_obj,file_program))
+  if )
     Pike_fatal ("ref_obj is not a file object.\n");
 
   for (ev = 0; ev < NELEM (f->event_cbs); ev++)
@@ -3761,8 +3760,7 @@ static void file_set_backend (INT32 args)
     SIMPLE_TOO_FEW_ARGS_ERROR ("Stdio.File->set_backend", 1);
   if (TYPEOF(Pike_sp[-args]) != PIKE_T_OBJECT)
     SIMPLE_BAD_ARG_ERROR ("Stdio.File->set_backend", 1, "object(Pike.Backend)");
-  backend = (struct Backend_struct *)
-    get_storage (Pike_sp[-args].u.object, Backend_program);
+  backend = get_storage (Pike_sp[-args].u.object, Backend_program);
   if (!backend)
     SIMPLE_BAD_ARG_ERROR ("Stdio.File->set_backend", 1, "object(Pike.Backend)");
 
diff --git a/src/modules/_Stdio/sendfile.c b/src/modules/_Stdio/sendfile.c
index 60e040fbdd7669f1876cb01ef584907dd0757c9b..950fab41abe99d337d77317231411bc4efe55dc7 100644
--- a/src/modules/_Stdio/sendfile.c
+++ b/src/modules/_Stdio/sendfile.c
@@ -918,12 +918,12 @@ static void sf_create(INT32 args)
   /* Check that we're called with the right kind of objects. */
   if (sf.to_file->prog == file_program) {
     sf.to = (struct my_file *)(sf.to_file->storage);
-  } else if (!(sf.to = (struct my_file *)get_storage(sf.to_file,
+  } else if (!(sf.to = get_storage(sf.to_file,
 						     file_program))) {
     struct svalue *sval;
-    if (!(sval = (struct svalue *)get_storage(sf.to_file, file_ref_program)) ||
+    if (!(sval = get_storage(sf.to_file, file_ref_program)) ||
 	(TYPEOF(*sval) != T_OBJECT) ||
-	!(sf.to = (struct my_file *)get_storage(sval->u.object, file_program))) {
+	!(sf.to = get_storage(sval->u.object, file_program))) {
       SIMPLE_BAD_ARG_ERROR("sendfile", 6, "object(Stdio.File)");
     }
     add_ref(sval->u.object);
@@ -955,13 +955,13 @@ static void sf_create(INT32 args)
   if (sf.from_file) {
     if (sf.from_file->prog == file_program) {
       sf.from = (struct my_file *)(sf.from_file->storage);
-    } else if (!(sf.from = (struct my_file *)get_storage(sf.from_file,
+    } else if (!(sf.from = get_storage(sf.from_file,
 							 file_program))) {
       struct svalue *sval;
-      if (!(sval = (struct svalue *)get_storage(sf.from_file,
+      if (!(sval = get_storage(sf.from_file,
 						file_ref_program)) ||
 	  !(TYPEOF(*sval) != T_OBJECT) ||
-	!(sf.from = (struct my_file *)get_storage(sval->u.object, file_program))) {
+	!(sf.from = get_storage(sval->u.object, file_program))) {
 	SIMPLE_BAD_ARG_ERROR("sendfile", 2, "object(Stdio.File)");
       }
       add_ref(sval->u.object);
diff --git a/src/modules/_Stdio/socket.c b/src/modules/_Stdio/socket.c
index 2df735b1474a2456e48d1fc897d269d4f77c8957..9b4c4980105e6c3e84928e7fc3af7ebb209c060a 100644
--- a/src/modules/_Stdio/socket.c
+++ b/src/modules/_Stdio/socket.c
@@ -669,8 +669,7 @@ static void port_set_backend (INT32 args)
     SIMPLE_TOO_FEW_ARGS_ERROR ("Stdio.Port->set_backend", 1);
   if (TYPEOF(Pike_sp[-args]) != PIKE_T_OBJECT)
     SIMPLE_BAD_ARG_ERROR ("Stdio.Port->set_backend", 1, "object(Pike.Backend)");
-  backend = (struct Backend_struct *)
-    get_storage (Pike_sp[-args].u.object, Backend_program);
+  backend = get_storage (Pike_sp[-args].u.object, Backend_program);
   if (!backend)
     SIMPLE_BAD_ARG_ERROR ("Stdio.Port->set_backend", 1, "object(Pike.Backend)");
 
@@ -774,7 +773,7 @@ void init_stdio_port(void)
 
 int fd_from_portobject( struct object *p )
 {
-  struct port *po = (struct port *)get_storage( p, port_program );
+  struct port *po = get_storage( p, port_program );
   if(!po) return -1;
   return po->box.fd;
 }
diff --git a/src/modules/_Stdio/stat.c b/src/modules/_Stdio/stat.c
index fd51ef21c9002a3768e47280863e1e1fe5735332..6ce6aa49ba2685641e90f6b1c033b40303a1bf0b 100644
--- a/src/modules/_Stdio/stat.c
+++ b/src/modules/_Stdio/stat.c
@@ -919,7 +919,7 @@ void push_stat(PIKE_STAT_T *s)
    struct object *o;
    struct stat_storage *stor;
    o=clone_object(stat_program,0);
-   stor=(struct stat_storage*)get_storage(o,stat_program);
+   stor=get_storage(o,stat_program);
    stor->s=*s;
    push_object(o);
 }
diff --git a/src/modules/_Stdio/udp.c b/src/modules/_Stdio/udp.c
index d939fb7e7fe6dea7207717d2c4bbeffb3d0cc481..d589bffe02b1949b5e92a549ca633633d90e45af 100644
--- a/src/modules/_Stdio/udp.c
+++ b/src/modules/_Stdio/udp.c
@@ -1251,8 +1251,7 @@ static void udp_set_backend (INT32 args)
     SIMPLE_TOO_FEW_ARGS_ERROR ("Stdio.UDP->set_backend", 1);
   if (TYPEOF(Pike_sp[-args]) != PIKE_T_OBJECT)
     SIMPLE_BAD_ARG_ERROR ("Stdio.UDP->set_backend", 1, "object(Pike.Backend)");
-  backend = (struct Backend_struct *)
-    get_storage (Pike_sp[-args].u.object, Backend_program);
+  backend = get_storage (Pike_sp[-args].u.object, Backend_program);
   if (!backend)
     SIMPLE_BAD_ARG_ERROR ("Stdio.UDP->set_backend", 1, "object(Pike.Backend)");
 
diff --git a/src/modules/_WhiteFish/resultset.h b/src/modules/_WhiteFish/resultset.h
index 52be1fb9353513c9a41f8b648d57cbb715adddd8..ee32d154aca5ef8a3fa60bf37286a115e4fcb09f 100644
--- a/src/modules/_WhiteFish/resultset.h
+++ b/src/modules/_WhiteFish/resultset.h
@@ -9,7 +9,7 @@ typedef struct result_set
 #ifdef PIKE_DEBUG
 extern struct program *resultset_program;
 struct object *wf_not_resultset( struct object *o );
-# define WF_RESULTSET(X) ((X&&get_storage(X,resultset_program))?X:wf_not_resultset(X))
+# define WF_RESULTSET(X) ()?X:wf_not_resultset(X))
 #else
 # define WF_RESULTSET(X) X
 #endif
diff --git a/src/post_modules/GL/auto.c.in b/src/post_modules/GL/auto.c.in
index ef46ec859d216b3065e165bca2d20b6db42263a0..36dd8dd577679aa53bfb064bb4f9fb01b6a8d36b 100644
--- a/src/post_modules/GL/auto.c.in
+++ b/src/post_modules/GL/auto.c.in
@@ -179,7 +179,7 @@ static void check_img_arg(struct svalue *a, struct zimage *img,
     struct svalue *v;
     if((v=simple_mapping_string_lookup(a->u.mapping, "rgb"))) {
       if(TYPEOF(*v) == T_OBJECT &&
-	 (rgbstor = (void *)get_storage(v->u.object, image_program)) != NULL &&
+	 (rgbstor = get_storage(v->u.object, image_program)) != NULL &&
 	 rgbstor->img != NULL)
 	;
       else
@@ -187,7 +187,7 @@ static void check_img_arg(struct svalue *a, struct zimage *img,
     }
     if((v=simple_mapping_string_lookup(a->u.mapping, "luminance"))) {
       if(TYPEOF(*v) == T_OBJECT &&
-	 (lumstor = (void *)get_storage(v->u.object, image_program)) != NULL &&
+	 (lumstor = get_storage(v->u.object, image_program)) != NULL &&
 	 lumstor->img != NULL)
 	;
       else
@@ -195,7 +195,7 @@ static void check_img_arg(struct svalue *a, struct zimage *img,
     }
     if((v=simple_mapping_string_lookup(a->u.mapping, "alpha"))) {
       if(TYPEOF(*v) == T_OBJECT &&
-	 (astor = (void *)get_storage(v->u.object, image_program)) != NULL &&
+	 (astor = get_storage(v->u.object, image_program)) != NULL &&
 	 astor->img != NULL)
 	;
       else
@@ -213,7 +213,7 @@ static void check_img_arg(struct svalue *a, struct zimage *img,
       }
 
       if( TYPEOF(*v) == T_OBJECT &&
-	  (stor_mem = (void *)get_storage( v->u.object, shm_program ) ) )
+	  (stor_mem = get_storage( v->u.object, shm_program ) ) )
       {
 	INT_TYPE x=0, y=0, row=0;
 	if( (v=simple_mapping_string_lookup(a->u.mapping, "mem_w" )) )
@@ -253,7 +253,7 @@ static void check_img_arg(struct svalue *a, struct zimage *img,
       }
     }
   } else if(TYPEOF(*a) == T_OBJECT &&
-	    (rgbstor = (void *)get_storage(a->u.object, image_program)) !=
+	    (rgbstor = get_storage(a->u.object, image_program)) !=
 	    NULL && rgbstor->img != NULL)
     ;
   else
@@ -356,7 +356,7 @@ static void *get_mem_object( struct svalue *x )
       Pike_error("Can't resolve System.Memory!\n");
   }
   if( TYPEOF(*x) != T_OBJECT ||
-      !(stor_mem = (void *)get_storage( x->u.object, shm_program ) ) )
+      !(stor_mem = get_storage( x->u.object, shm_program ) ) )
     Pike_error("Expected System.Memory object\n");
   return stor_mem->p;
 }
diff --git a/src/post_modules/GTK1/source/support.c b/src/post_modules/GTK1/source/support.c
index e85825c40f855ae622386c37d37954273b21c4be..7f7b25f5e57666bc683569c64911deb7f36c4b32 100644
--- a/src/post_modules/GTK1/source/support.c
+++ b/src/post_modules/GTK1/source/support.c
@@ -78,7 +78,7 @@ int get_color_from_pikecolor( struct object *o, INT_TYPE *r, INT_TYPE *g, INT_TY
     pike_color_program = program_from_svalue(--Pike_sp);
   }
 
-  col = (struct color_struct *)get_storage( o, pike_color_program );
+  col = get_storage( o, pike_color_program );
   if(!col) return 0;
   *r = col->rgbl.r/(COLORLMAX/65535);
   *g = col->rgbl.g/(COLORLMAX/65535);
@@ -304,7 +304,7 @@ GtkObject *get_pgtkobject(struct object *from, struct program *type)
 {
   struct object_wrapper * o;
   if(!from) return NULL;
-  o=(struct object_wrapper *)get_storage( from, type );
+  o=get_storage( from, type );
   if(!o) return 0;
   return o->obj;
 }
@@ -324,8 +324,7 @@ void *get_pgdkobject(struct object *from, struct program *type)
 
 void my_destruct( struct object *o )
 {
-  struct object_wrapper *ow =
-           (struct object_wrapper *)get_storage( o, pgtk_object_program );
+  struct object_wrapper *ow = get_storage( o, pgtk_object_program );
   if( ow ) /* This should always be true. But let's add a check anyway. */
     ow->obj = NULL;
   if( o->refs > 1 )
diff --git a/src/post_modules/GTK2/source/gdkbitmap.pre b/src/post_modules/GTK2/source/gdkbitmap.pre
index d70b1ac4a10d7c1edfe775c6fad4feda06b83fd9..3b69fa3841fe0084974268c113797f8a122c90a6 100644
--- a/src/post_modules/GTK2/source/gdkbitmap.pre
+++ b/src/post_modules/GTK2/source/gdkbitmap.pre
@@ -31,7 +31,7 @@ void create(int|Image.Image xsize_or_image, int|void ysize, string|void bitmap)
     struct object *o;
     struct image *img;
     get_all_args("create",args,"%o",&o);
-    img=(struct image*)get_storage(o, image_program);
+    img=get_storage(o, image_program);
     x = img->xsize;
     y = img->ysize;
 
diff --git a/src/post_modules/GTK2/source/gtkimage.pre b/src/post_modules/GTK2/source/gtkimage.pre
index 7983c4ce6ecda0bba092da93611846ea6da7d94b..e31128cb3e6b4d5c9af45a28f0029fe3d3c6dd21 100644
--- a/src/post_modules/GTK2/source/gtkimage.pre
+++ b/src/post_modules/GTK2/source/gtkimage.pre
@@ -197,7 +197,7 @@ mapping(string:mixed) get_icon_name()
     PGTK_PUSH_GCHAR(icon_name);
     ref_push_string(_STR("size"));
     push_int(size);
-    f_aggregate_mapping(4);
+    f_aggregate_mapping;
   }
 }
 endrequire;
diff --git a/src/post_modules/GTK2/source/gtkprintcontext.pre b/src/post_modules/GTK2/source/gtkprintcontext.pre
index 211e90a910720a0bc6cf4f259d5ad16f77ec95db..8bb537323a78552bd06aec16c15d9f819bd3e440 100644
--- a/src/post_modules/GTK2/source/gtkprintcontext.pre
+++ b/src/post_modules/GTK2/source/gtkprintcontext.pre
@@ -58,7 +58,7 @@ void set_cairo_context(Cairo.Context cr, float dpi_x, float dpi_y)
     struct cairo_mod_context *cc;
 
     get_all_args("set_cairo_context",args,"%o%f%f",&o,&x,&y);
-    if (!(cc = (struct cairo_mod_context *)get_storage(o1, cairo_program)))
+    if (!(cc = get_storage(o1, cairo_program)))
       Pike_error("Object is not derived from Cairo.Context");
     gtk_print_context_set_cairo_context(GTK_PRINT_CONTEXT(THIS->obj),
 			cc->ctx,x,y);
diff --git a/src/post_modules/GTK2/source/gtktreerowreference.pre b/src/post_modules/GTK2/source/gtktreerowreference.pre
index f562b386d2d1b9c4469be03bd2168f2d68272200..40dc3d62e1ae06125a7e29a58bcc4f6c9e7a8593 100644
--- a/src/post_modules/GTK2/source/gtktreerowreference.pre
+++ b/src/post_modules/GTK2/source/gtktreerowreference.pre
@@ -41,7 +41,7 @@ GTK2.TreePath get_path()
 /*
   struct object *o=fast_clone_object(pgtk2_tree_path_program);
   struct object_wrapper *ow;
-  ow=(struct object_wrapper *)get_storage(o,pgtk2_tree_path_program);
+  ow=get_storage(o,pgtk2_tree_path_program);
   ow->obj=(void *)gtk_tree_row_reference_get_path(
 	(GtkTreeRowReference *)(THIS->obj));
 */
diff --git a/src/post_modules/GTK2/source/support.c b/src/post_modules/GTK2/source/support.c
index 072eb7c4aea219d993e9b3a2306be223c515d537..d0df00fd97f2fde5591d49558d37d914e6e40195 100644
--- a/src/post_modules/GTK2/source/support.c
+++ b/src/post_modules/GTK2/source/support.c
@@ -76,7 +76,7 @@ void pgtk2_index_stack(char *what) {
 
 int get_color_from_pikecolor(struct object *o, INT_TYPE *r, INT_TYPE *g, INT_TYPE *b) {
   struct color_struct *col;
-  col=(struct color_struct *)get_storage(o,image_color_program);
+  col=get_storage(o,image_color_program);
   if (!col)
     return 0;
   *r=col->rgbl.r/(COLORLMAX/65535);
@@ -94,7 +94,7 @@ GdkImage *gdkimage_from_pikeimage(struct object *img, int fast, GObject **pi) {
 
   TIMER_INIT("Getting extents");
 
-  img_data=(struct image*)get_storage(img, image_program);
+  img_data=get_storage(img, image_program);
 
   /* 1a: create the actual image... */
   x = img_data->xsize;
@@ -299,7 +299,7 @@ GObject *get_pg2object(struct object *from, struct program *type) {
   struct object_wrapper * o;
   if (!from)
     return NULL;
-  o=(struct object_wrapper *)get_storage(from,type);
+  o=get_storage(from,type);
   if (!o)
     return 0;
   return o->obj;
@@ -309,7 +309,7 @@ void *get_pgdk2object(struct object *from, struct program *type) {
   void *f;
   if (!from) 
     return NULL;
-  if (type)
+  if(type)
     f=get_storage( from, type );
   else
     f=from->storage; /* Add a warning? */
@@ -320,7 +320,7 @@ void *get_pgdk2object(struct object *from, struct program *type) {
 
 void pgtk2_destruct(struct object *o) {
   struct object_wrapper *ow=
-	   (struct object_wrapper *)get_storage(o,pg2_object_program);
+	   get_storage(o,pg2_object_program);
   if (ow) /* This should always be true. But let's add a check anyway. */
     ow->obj=NULL;
   if (o->refs>1)
diff --git a/src/post_modules/SDL/SDL.cmod b/src/post_modules/SDL/SDL.cmod
index df0d574b0e58a3ebcdcca3aba765beeef03d5b3a..cb0d9427e1630902598d1aea359f07c06bd5bc05 100644
--- a/src/post_modules/SDL/SDL.cmod
+++ b/src/post_modules/SDL/SDL.cmod
@@ -65,8 +65,7 @@ static struct object *image_make_rgb_color(INT32 r,INT32 g,INT32 b)
 
    color = clone_object(image_color_program,0);
 
-   cs=(struct color_struct*)
-      get_storage(color, image_color_program);
+   cs= get_storage(color, image_color_program);
 
    cs->rgb.r=(COLORTYPE)r;
    cs->rgb.g=(COLORTYPE)g;
diff --git a/src/post_modules/Shuffler/Shuffler.cmod b/src/post_modules/Shuffler/Shuffler.cmod
index 2181c8f0406fa7baa42f8093c948139391397d93..d80a3c4fc32701cf557c64bbaaa8460e88790da8 100644
--- a/src/post_modules/Shuffler/Shuffler.cmod
+++ b/src/post_modules/Shuffler/Shuffler.cmod
@@ -600,8 +600,7 @@ PIKECLASS Shuffle
     else {
       safe_apply( fd, "release_fd", 0 );
       if(TYPEOF(*backend) == PIKE_T_OBJECT && backend->u.object) {
-        be = (struct Backend_struct*)
-	  get_storage(backend->u.object, Backend_program);
+        be = get_storage(backend->u.object, Backend_program);
 	if (!be) {
 	  SIMPLE_BAD_ARG_ERROR("Shuffle->create()", 4,
 			       "object(Pike.__Backend)");
diff --git a/src/post_modules/Shuffler/a_source_system_memory.c b/src/post_modules/Shuffler/a_source_system_memory.c
index 497e7875ea97e1dce816a5b507f0b15e80e390d1..a122fc7ced656a7f46efbec4ec803fcd99cdf1b2 100644
--- a/src/post_modules/Shuffler/a_source_system_memory.c
+++ b/src/post_modules/Shuffler/a_source_system_memory.c
@@ -81,7 +81,7 @@ struct source *source_system_memory_make( struct svalue *s,
   res = calloc( 1, sizeof( struct sm_source ) );
   if( !res ) return NULL;
 
-  if( !(res->mem = (void*)get_storage( s->u.object, shm_program ) ) )
+  if( !(res->mem = get_storage( s->u.object, shm_program ) ) )
   {
     free(res);
     return 0;
diff --git a/src/security.c b/src/security.c
index 149ad04155a0794c04ee5ab8c5657c760b5fdd91..2f63ef15f73c9c018a4cc219e76149b182092a95 100644
--- a/src/security.c
+++ b/src/security.c
@@ -55,9 +55,7 @@ static struct program *creds_program;
 
 static int valid_creds_object(struct object *o)
 {
-  return o &&
-    get_storage(o, creds_program) == o->storage &&
-    OBJ2CREDS(o)->user;
+  return o && get_storage(o, creds_program) == o->storage && OBJ2CREDS(o)->user;
 }
 
 static void restore_creds(struct object *creds)
diff --git a/src/signal_handler.c b/src/signal_handler.c
index 3e1111d3478d1f5b9b86901a98f057f0e41b0f46..c05f3dd339fb3320842e75e9e9993feb4ca36897 100644
--- a/src/signal_handler.c
+++ b/src/signal_handler.c
@@ -1292,7 +1292,7 @@ static void call_pid_status_callback(struct callback *cb, void *pid, void *UNUSE
   struct pid_status *p;
   remove_callback(cb);
   if (!o) return;
-  if(!(p=(struct pid_status *)get_storage(o, pid_status_program))) {
+  if(!(p=get_storage(o, pid_status_program))) {
     free_object(o);
     return;
   }
@@ -1325,8 +1325,8 @@ static void report_child(int pid,
 	struct object *o;
 	PROC_FPRINTF((stderr, "[%d] Found pid object for pid %d: %p\n",
 		      getpid(), (int)pid, s->u.object));
-	if((p=(struct pid_status *)get_storage((o = s->u.object),
-					       pid_status_program)))
+	if((p=get_storage((o = s->u.object),
+                          pid_status_program)))
 	{
 	  if (!SAFE_IS_ZERO(&p->callback)) {
 	    /* Call the callback from a proper pike thread... */
@@ -4349,7 +4349,7 @@ void Pike_f_fork(INT32 args)
 
     o=low_clone(pid_status_program);
     call_c_initializers(o);
-    p=(struct pid_status *)get_storage(o,pid_status_program);
+    p=get_storage(o,pid_status_program);
     p->pid=pid;
     p->state=PROCESS_RUNNING;
     push_object(o);
@@ -4591,8 +4591,8 @@ static void f_kill(INT32 args)
   case T_OBJECT:
   {
     struct pid_status *p;
-    if((p=(struct pid_status *)get_storage(Pike_sp[-args].u.object,
-					  pid_status_program)))
+    if((p=get_storage(Pike_sp[-args].u.object,
+                      pid_status_program)))
     {
       proc=p->handle;
       break;
diff --git a/src/svalue.c b/src/svalue.c
index db506f9cae33a609ab91b908c0267ff4809af039..9961f8026344806beab9ec10b97e550c9ae6f85e 100644
--- a/src/svalue.c
+++ b/src/svalue.c
@@ -503,8 +503,8 @@ int complex_svalue_is_true( const struct svalue *s )
     if(!s->u.object->prog) return 0;
     if (s->u.object->prog == pike_trampoline_program) {
       /* Trampoline */
-      struct pike_trampoline *tramp = (struct pike_trampoline *)
-	get_storage(s->u.object, pike_trampoline_program);
+      struct pike_trampoline *tramp =
+        get_storage(s->u.object, pike_trampoline_program);
       if (!tramp || !tramp->frame || !tramp->frame->current_object ||
 	  !tramp->frame->current_object->prog) {
 	/* Uninitialized trampoline, or trampoline to destructed object. */
@@ -571,8 +571,8 @@ PMOD_EXPORT int safe_svalue_is_true(const struct svalue *s)
     if(!s->u.object->prog) return 0;
     if (s->u.object->prog == pike_trampoline_program) {
       /* Trampoline */
-      struct pike_trampoline *tramp = (struct pike_trampoline *)
-	get_storage(s->u.object, pike_trampoline_program);
+      struct pike_trampoline *tramp =
+        get_storage(s->u.object, pike_trampoline_program);
       if (!tramp || !tramp->frame || !tramp->frame->current_object ||
 	  !tramp->frame->current_object->prog) {
 	/* Uninitialized trampoline, or trampoline to destructed object. */
@@ -772,9 +772,9 @@ PMOD_EXPORT int is_eq(const struct svalue *a, const struct svalue *b)
 	(a->u.object->prog == pike_trampoline_program) &&
 	(b->u.object->prog == pike_trampoline_program)) {
       /* Trampoline. */
-      struct pike_trampoline *a_tramp = (struct pike_trampoline *)
-	get_storage(a->u.object, pike_trampoline_program);
-      struct pike_trampoline *b_tramp = (struct pike_trampoline *)
+      struct pike_trampoline *a_tramp =
+    get_storage(a->u.object, pike_trampoline_program);
+      struct pike_trampoline *b_tramp =
 	get_storage(b->u.object, pike_trampoline_program);
       if (a_tramp == b_tramp) return 1;
       if (!a_tramp || !b_tramp) return 0;
@@ -1386,8 +1386,8 @@ PMOD_EXPORT void describe_svalue(const struct svalue *s,int indent,struct proces
 
 	  if (prog == pike_trampoline_program) {
 	    /* Trampoline */
-	    struct pike_trampoline *tramp = (struct pike_trampoline *)
-	      get_storage(obj, pike_trampoline_program);
+	    struct pike_trampoline *tramp =
+                get_storage(obj, pike_trampoline_program);
 	    if (!tramp || !tramp->frame || !tramp->frame->current_object ||
 		!tramp->frame->current_object->prog) {
 	      /* Uninitialized trampoline, or