diff --git a/gl_rmain.c b/gl_rmain.c
index 4b7238b..aac1cc8 100644
--- a/gl_rmain.c
+++ b/gl_rmain.c
@@ -86,9 +86,6 @@ refdef_t	r_refdef;
 
 mleaf_t		*r_viewleaf, *r_oldviewleaf;
 
-int		d_lghtstylevalue[256];	// 8.8 fraction of base light value
-
-
 void R_MarkLeaves (void);
 void R_Clear (void);
 
@@ -143,7 +140,7 @@ cvar_t  gl_wireframe = {"gl_wireframe","0"};
 cvar_t  gl_caustics = {"gl_caustics","1"};
 cvar_t  gl_truform = {"gl_truform","0"};
 cvar_t  gl_truform_tesselation = {"gl_truform_tesselation","4"};
-cvar_t	gl_mesherror = {"gl_mesherror","3"};//PENTA: subdivision of meshes
+cvar_t	gl_mesherror = {"gl_mesherror","0.3"};
 
 cvar_t	fog_r = {"fog_r","0.2"};
 cvar_t	fog_g = {"fog_g","0.1"};
@@ -156,6 +153,8 @@ float fog_color[4];
 cvar_t	r_tangentscale = {"r_tangentscale","1"}; 
 cvar_t	sh_delux = {"sh_delux","1"};
 cvar_t	sh_rtlights = {"sh_rtlights","1"};
+cvar_t	gl_clipboth = {"gl_clipboth","0"}; //front and back clipping for vertex troughput benchmarking
+cvar_t	gl_displacement = {"gl_displacement","0"};
 
 mirrorplane_t mirrorplanes[NUM_MIRROR_PLANES];
 int mirror_contents;
@@ -320,13 +319,13 @@ void R_DrawSpriteModel (entity_t *e)
 	tex += 2;
 
 	Q_memset(&def,0,sizeof(vertexdef_t));
-	def.vertices = verts;
-	def.texcoords = texco;
-	def.tangents = NULL;
-	def.binormals = NULL;
-	def.normals = NULL;
-	def.lightmapcoords = NULL;
-	def.colors = NULL;
+	def.vertices = GL_WrapUserPointer(verts);
+	def.texcoords = GL_WrapUserPointer(texco);
+	def.tangents = DRVNULL;
+	def.binormals = DRVNULL;
+	def.normals = DRVNULL;
+	def.lightmapcoords = DRVNULL;
+	def.colors = DRVNULL;
 
 
 	if (frame->shader->flags & SURF_NODRAW) return;
@@ -780,11 +779,11 @@ R_SetupAliasFrame
 
 =================
 */
-
+/*
 void R_SetupAliasFrame (aliashdr_t *paliashdr, aliasframeinstant_t *instant)
 {
 	float*			texcoos;
-	int*			indecies;
+	int*			indecies;*/
 	/*
 	if ((frame >= paliashdr->numframes) || (frame < 0))
 	{
@@ -803,7 +802,7 @@ void R_SetupAliasFrame (aliashdr_t *paliashdr, aliasframeinstant_t *instant)
 		pose += (int)(cl.time / interval) % numposes;
 	}
 	*/
-
+/*
 	texcoos = (float *)((byte *)paliashdr + paliashdr->texcoords);
 	indecies = (int *)((byte *)paliashdr + paliashdr->indecies);
 	//GL_DrawAliasFrame (paliashdr, pose);
@@ -820,6 +819,7 @@ void R_SetupAliasFrame (aliashdr_t *paliashdr, aliasframeinstant_t *instant)
 	glDisableClientState(GL_NORMAL_ARRAY);
 	glDisableClientState(GL_TEXTURE_COORD_ARRAY);
 }
+*/
 
 /*
 	Draws the tangent space of the model
@@ -869,7 +869,7 @@ DC : draw one surface from a model
 =================
 */
 
-	
+	/*
 
 void R_DrawAliasSurface (aliashdr_t *paliashdr, float bright, aliasframeinstant_t *instant)
 {
@@ -889,7 +889,7 @@ void R_DrawAliasSurface (aliashdr_t *paliashdr, float bright, aliasframeinstant_
 	//XYZ
 	if (gl_wireframe.value) {
 		glDisable(GL_TEXTURE_2D);
-	}
+	}*/
 /*
 	if ( gl_truform.value )
 	{
@@ -900,7 +900,7 @@ void R_DrawAliasSurface (aliashdr_t *paliashdr, float bright, aliasframeinstant_
 	}
 
 */
-
+/*
 	glColor3f(bright, bright, bright);
 	//if (busy_caustics)
 	//	glColor3f(1,1,1);
@@ -935,7 +935,7 @@ void R_DrawAliasSurface (aliashdr_t *paliashdr, float bright, aliasframeinstant_
                 glFogfv(GL_FOG_COLOR, fog_color);
             }
 			*/
-        }
+  /*      }
 
 	if ((sh_showtangent.value) && (!busy_caustics)) {
 		glDisable(GL_TEXTURE_2D);
@@ -951,7 +951,7 @@ void R_DrawAliasSurface (aliashdr_t *paliashdr, float bright, aliasframeinstant_
 	    glDisable(GL_PN_TRIANGLES_ATI);
 	}
 }
-
+*/
  
  
 /*
@@ -2068,7 +2068,6 @@ void R_RenderScene (void)
 		//it fills the z buffer
 	R_SetupInstants();
 
-
 	//XYZ - moved upwards
 	if (gl_wireframe.value) {
 		float old = sh_lightmapbright.value;
@@ -2549,126 +2548,6 @@ void R_RenderMirrors()
 	}
 }
 
-void R_SetupMirrorShader(msurface_t *surf,mirrorplane_t *mir) {
-
-	if (mir_detail.value < 1) {
-		GL_Bind(newenvmap);
-	} else
-		GL_Bind(mir->texture_object);
-
-	if ((surf->flags & SURF_DRAWTURB) && !(surf->flags & SURF_GLASS)) {
-		//it is water
-		//glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
-		glBlendFunc(GL_SRC_ALPHA,GL_ONE);
-		glEnable(GL_BLEND);
-		return;
-	} else {
-
-		if (surf->flags & SURF_DRAWTURB) {
-			glBlendFunc(GL_SRC_ALPHA,GL_ONE);
-			glEnable(GL_BLEND);
-			return;
-		}
-
-		//it is glass or a mirror
-		//GL_EnableMultiTexture();
-		glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
-		glTexEnvf (GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
-		glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
-
-		GL_EnableMultitexture();
-//SHADERS		GL_Bind(surf->texinfo->texture->gl_texturenum);
-
-		//No colormaps: Color maps are bound on tmu 0 so disable it
-		//and let tu1 modulate itself with the light map brightness
-		glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
-		glTexEnvf (GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB);
-		glTexEnvf (GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);
-		glTexEnvf (GL_TEXTURE_ENV, GL_SOURCE2_RGB_ARB, GL_TEXTURE);
-		glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_INTERPOLATE_ARB);
-		glTexEnvf (GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, GL_SRC_ALPHA);
-
-//SHADERS		GL_Bind(surf->texinfo->texture->gl_texturenum);
-	}
-}
-
-void R_DisableMirrorShader(msurface_t *surf,mirrorplane_t *mir) {
-
-
-	if ((surf->flags & SURF_DRAWTURB) && !(surf->flags & SURF_GLASS)) {
-		//it is water
-		glDisable(GL_BLEND);
-		return;
-	} else {
-
-		if (surf->flags & SURF_DRAWTURB) {
-			glDisable(GL_BLEND);
-			return;
-		}
-
-		glTexEnvf (GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, GL_SRC_COLOR);
-		GL_DisableMultitexture();
-	}
-}
-
-void R_DrawMirrorSurfaces()
-{
-	int i;
-	msurface_t *s;
-
-	glBlendFunc(GL_SRC_ALPHA,GL_ONE);
-	for (i=0; i<NUM_MIRROR_PLANES; i++) {
-		if (mirrorplanes[i].chain) {
-
-			glMatrixMode(GL_TEXTURE);
-
-			glPushMatrix();
-			if (mir_detail.value > 0) {
-				glLoadIdentity();
-				glTranslatef(0.5, 0.5, 0);
-				glScalef(0.5, 0.5, 0);
-				glMultMatrixf (r_projection_matrix);
-				glMultMatrixf (r_world_matrix);
-			} else {
-				//glMultMatrixf (r_projection_matrix);
-				glTranslatef(r_refdef.vieworg[0]/1000,r_refdef.vieworg[1]/1000,r_refdef.vieworg[2]/1000);
-				glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP);
-				glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP);
-				glEnable(GL_TEXTURE_GEN_S);
-				glEnable(GL_TEXTURE_GEN_T);
-			}
-
-			R_SetupMirrorShader(mirrorplanes[i].chain,&mirrorplanes[i]);
-
-			s = mirrorplanes[i].chain;
-
-			glNormal3fv(mirrorplanes[i].plane.normal);
-			for ( ; s ; s=s->texturechain) {
-			if ((s->flags & SURF_GLASS) && (s->flags & SURF_DRAWTURB)) {
-					glColor4f(1,1,1,0.5);
-					EmitMirrorPolys (s);
-				} else if (s->flags & SURF_DRAWTURB) {
-					glColor4f(1,1,1,r_wateralpha.value);
-					EmitMirrorWaterPolys (s);
-				}  else {
-					glColor4f(1,1,1,1);
-					EmitMirrorPolys (s);
-				}
-			}
-
-			R_DisableMirrorShader(mirrorplanes[i].chain,&mirrorplanes[i]);
-
-			glPopMatrix();
-        		if (mir_detail.value == 0) {
-				glDisable(GL_TEXTURE_GEN_S);
-				glDisable(GL_TEXTURE_GEN_T);
-			}
-			glMatrixMode(GL_MODELVIEW);
-		}
-	}
-	glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
-}
-
 /*
 =============
 R_Clear
@@ -2800,6 +2679,10 @@ void R_RenderView (void)
 			glEnable(GL_FOG);
 	}
 
+	if (gl_clipboth.value) {
+		glCullFace(GL_FRONT_AND_BACK);
+	}
+
 	if (mir_detail.value > 0) {
 		R_RenderMirrors();
 		//	glClear (GL_DEPTH_BUFFER_BIT);
@@ -2815,6 +2698,10 @@ void R_RenderView (void)
 
 	R_RenderScene ();
 	
+	if (gl_clipboth.value) {
+		glCullFace(GL_BACK);
+	}
+
 	DrawLightVolumeInfo();
 
 	//R_DrawViewModel ();
@@ -2825,7 +2712,7 @@ void R_RenderView (void)
 	draw to make sure particles are rendered over the surface of the water. - Eradicator*/
 
 //	R_DrawWaterSurfaces ();
-	R_DrawMirrorSurfaces ();
+//	R_DrawMirrorSurfaces ();
 
 //  More fog right here :)