rewrite volume.c