diff --git a/reaction/game/bg_misc.c b/reaction/game/bg_misc.c
index 3522be38..4cbaa076 100644
--- a/reaction/game/bg_misc.c
+++ b/reaction/game/bg_misc.c
@@ -56,7 +56,7 @@ gitem_t	bg_itemlist[] =
 		"sound/misc/am_pkup.wav",
 		{"models/weapons2/knife/knife.md3",0,0,0},
 		"icons/iconw_knife",
-		"Knife",
+		RQ3_KNIFE_NAME,
 		1,
 		IT_WEAPON,
 		WP_KNIFE,
@@ -71,7 +71,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/mk23/mk23.md3", 
 		0, 0, 0},
 /* icon */		"icons/iconw_mk23",
-/* pickup */	"MK23",
+/* pickup */	RQ3_PISTOL_NAME,
 		12,
 		IT_WEAPON,
 		WP_PISTOL,
@@ -86,7 +86,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/m4/m4.md3", 
 		0, 0, 0},
 /* icon */		"icons/iconw_m4",
-/* pickup */	"M4",
+/* pickup */	RQ3_M4_NAME,
 		24,
 		IT_WEAPON,
 		WP_M4,
@@ -101,7 +101,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/ssg3000/ssg3000.md3", 
 		0, 0, 0},
 /* icon */		"icons/iconw_ssg",
-/* pickup */	"SSG3000",
+/* pickup */	RQ3_SSG3000_NAME,
 		6,
 		IT_WEAPON,
 		WP_SSG3000,
@@ -116,7 +116,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/mp5/mp5.md3", 
 		0, 0, 0},
 /* icon */		"icons/iconw_mp5",
-/* pickup */	"MP5",
+/* pickup */	RQ3_MP5_NAME,
 		30,
 		IT_WEAPON,
 		WP_MP5,
@@ -131,7 +131,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/handcannon/handcannon.md3", 
 		0, 0, 0},
 /* icon */		"icons/iconw_sawedoff",
-/* pickup */	"Hand Cannon",
+/* pickup */	RQ3_HANDCANNON_NAME,
 		2,
 		IT_WEAPON,
 		WP_HANDCANNON,
@@ -146,7 +146,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/m3/m3.md3", 
 		0, 0, 0},
 /* icon */		"icons/iconw_m3",
-/* pickup */	"M3 Super Shotgun",
+/* pickup */	RQ3_M3_NAME,
 		7,
 		IT_WEAPON,
 		WP_M3,
@@ -161,7 +161,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/akimbo/akimbo.md3", 
 		0, 0, 0},
 /* icon */		"icons/iconw_akimbo",
-/* pickup */	"Akimbo Pistols",
+/* pickup */	RQ3_AKIMBO_NAME,
 		24,
 		IT_WEAPON,
 		WP_AKIMBO,
@@ -177,8 +177,8 @@ gitem_t	bg_itemlist[] =
 		"sound/misc/am_pkup.wav",
         { "models/weapons2/grenade/grenade.md3", 
 		0, 0, 0},
-/* icon */		"icons/iconw_grenade",
-/* pickup */	"Grenade",
+/* icon */		"icons/iconw_gren",
+/* pickup */	RQ3_GRENADE_NAME,
 		1,
 		IT_WEAPON,
 		WP_GRENADE,
@@ -193,7 +193,7 @@ gitem_t	bg_itemlist[] =
 		NULL,
 		{"models/weapons2/knife/knife_3rd.md3",0,0,0},
 		"icons/iconw_knife",
-		"Knife",
+		RQ3_KNIFE_NAME,
 		1,
 		IT_WEAPON,
 		WP_KNIFE,
@@ -208,7 +208,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/mk23/mk23_3rd.md3", 
 		0, 0, 0},
 		"icons/iconw_mk23",
-		"MK23",
+		RQ3_PISTOL_NAME,
 		12,
 		IT_WEAPON,
 		WP_PISTOL,
@@ -223,7 +223,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/m4/m4_3rd.md3", 
 		0, 0, 0},
 		"icons/iconw_m4",
-		"M4",
+		RQ3_M4_NAME,
 		24,
 		IT_WEAPON,
 		WP_M4,
@@ -238,7 +238,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/ssg3000/ssg3000_3rd.md3", 
 		0, 0, 0},
 		"icons/iconw_ssg",
-		"SSG3000",
+		RQ3_SSG3000_NAME,
 		6,
 		IT_WEAPON,
 		WP_SSG3000,
@@ -253,7 +253,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/mp5/mp5_3rd.md3", 
 		0, 0, 0},
 		"icons/iconw_mp5",
-		"MP5",
+		RQ3_MP5_NAME,
 		30,
 		IT_WEAPON,
 		WP_MP5,
@@ -268,7 +268,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/handcannon/handcannon_3rd.md3", 
 		0, 0, 0},
 		"icons/iconw_sawedoff",
-		"Hand Cannon",
+		RQ3_HANDCANNON_NAME,
 		2,
 		IT_WEAPON,
 		WP_HANDCANNON,
@@ -283,7 +283,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/m3/m3_3rd.md3", 
 		0, 0, 0},
 		"icons/iconw_m3",
-		"M3 Super Shotgun",
+		RQ3_M3_NAME,
 		7,
 		IT_WEAPON,
 		WP_M3,
@@ -298,7 +298,7 @@ gitem_t	bg_itemlist[] =
         { "models/weapons2/akimbo/akimbo_3rd.md3", 
 		0, 0, 0},
 		"icons/iconw_akimbo",
-		"Akimbo Pistols",
+		RQ3_AKIMBO_NAME,
 		24,
 		IT_WEAPON,
 		WP_AKIMBO,
@@ -313,8 +313,8 @@ gitem_t	bg_itemlist[] =
 		NULL,
         { "models/weapons2/grenade/grenade_3rd.md3", 
 		0, 0, 0},
-		"icons/iconw_grenade",
-		"Grenade",
+		"icons/iconw_gren",
+		RQ3_GRENADE_NAME,
 		1,
 		IT_WEAPON,
 		WP_GRENADE,
diff --git a/reaction/game/bg_pmove.c b/reaction/game/bg_pmove.c
index 7ac29931..76ef8d59 100644
--- a/reaction/game/bg_pmove.c
+++ b/reaction/game/bg_pmove.c
@@ -1890,7 +1890,7 @@ static void PM_Weapon( void ) {
 
 	// Elder: fire on release - based on code from inolen
 	// check for fire
-	// if they are pressing attack and their current weapon is the railgun
+	// if they are pressing attack and their current weapon is the grenade
 	if ((pm->cmd.buttons & 1) && (pm->ps->weapon == WP_GRENADE) ) {
 		pm->ps->weaponTime = 0;
 		// put it in the "cocked" position
@@ -1973,6 +1973,14 @@ static void PM_Weapon( void ) {
 		return;
 	}
 
+
+	//Elder: M4 kick code
+	//ent->client->ps.delta_angles[0] = ANGLE2SHORT(SHORT2ANGLE(ent->client->ps.delta_angles[0]) - 0.7);
+	if ( pm->ps->weapon == WP_M4 && ((pm->ps->persistant[PERS_WEAPONMODES] & RQ3_M4MODE) != RQ3_M4MODE) )
+	{
+		pm->ps->delta_angles[0] = ANGLE2SHORT(SHORT2ANGLE(pm->ps->delta_angles[0]) - 0.7);
+	}
+
 	//if ( ! pm->ps->ammo[ pm->ps->weapon ] ||
 		//pm->ps->weapon == WP_AKIMBO && pm->ps->ammo[ pm->ps->weapon ] == 1) {
 		//PM_AddEvent( EV_NOAMMO );
diff --git a/reaction/game/g_active.c b/reaction/game/g_active.c
index e9c5e4db..a880ca29 100644
--- a/reaction/game/g_active.c
+++ b/reaction/game/g_active.c
@@ -1497,17 +1497,22 @@ void ClientEndFrame( gentity_t *ent ) {
 	}
 
 	
+	//Moved to pmove.c
 	//Elder: M4 ride-up/kick -- condition for non-burst and ammo only
-	if ( ent->client->ps.weapon == WP_M4 && ent->client->ps.ammo[WP_M4] > 0 &&
-		(ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_M4MODE) != RQ3_M4MODE &&
-		(ent->client->buttons & BUTTON_ATTACK) == BUTTON_ATTACK)
-	{
+	//if ( ent->client->ps.weapon == WP_M4 && ent->client->ps.ammo[WP_M4] > 0 &&
+		//(ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_M4MODE) != RQ3_M4MODE &&
+		//ent->client->ps.weaponstate == WEAPON_FIRING)
+		//(ent->client->buttons & BUTTON_ATTACK) == BUTTON_ATTACK)
+	//{
 		//G_Printf("bullets: %d, viewangle: %f\n", ent->client->consecutiveShots, ent->client->ps.viewangles[0]);	
-		ent->client->ps.delta_angles[0] = ANGLE2SHORT(SHORT2ANGLE(ent->client->ps.delta_angles[0]) - 0.7);
-	}
-	else if (ent->client->consecutiveShots)
+		//ent->client->ps.delta_angles[0] = ANGLE2SHORT(SHORT2ANGLE(ent->client->ps.delta_angles[0]) - 0.7);
+	//}
+	//else if (ent->client->consecutiveShots)
+
+	if (ent->client->consecutiveShots &&
+		(ent->client->ps.ammo[WP_M4] <= 0 || ent->client->ps.weaponstate != WEAPON_FIRING))
 	{
-		//Restore view after shots
+		//Restore view after shots if not firing
 		ent->client->ps.delta_angles[0] = ANGLE2SHORT(SHORT2ANGLE(ent->client->ps.delta_angles[0]) - ent->client->consecutiveShots * -0.7);
 		ent->client->consecutiveShots = 0;
 	}
diff --git a/reaction/game/g_client.c b/reaction/game/g_client.c
index 96f44ca8..1e66a64b 100644
--- a/reaction/game/g_client.c
+++ b/reaction/game/g_client.c
@@ -961,7 +961,7 @@ and on transition between teams, but doesn't happen on respawns
 void ClientBegin( int clientNum ) {
 	gentity_t	*ent;
 	gclient_t	*client;
-	gentity_t	*tent;
+	//gentity_t	*tent;
 	int			flags;
 
 	ent = g_entities + clientNum;
@@ -989,12 +989,6 @@ void ClientBegin( int clientNum ) {
 	memset( &client->ps, 0, sizeof( client->ps ) );
 	client->ps.eFlags = flags;
 
-	//Elder: added to initialize weaponmodes
-	client->ps.persistant[PERS_WEAPONMODES] |= RQ3_GRENSHORT; //set to short range
-	client->ps.persistant[PERS_WEAPONMODES] |= RQ3_KNIFEMODE; //set to slash attack
-	//Elder: debug
-	//G_Printf("In clientbegin- PERS_WEAPONMODES: %d\n", ent->client->ps.persistant[PERS_WEAPONMODES]);
-
 	// locate ent at a spawn point
 	ClientSpawn( ent );
 
@@ -1002,7 +996,14 @@ void ClientBegin( int clientNum ) {
 		// send event
 		//Elder: removed
 		//tent = G_TempEntity( ent->client->ps.origin, EV_PLAYER_TELEPORT_IN );
-		tent->s.clientNum = ent->s.clientNum;
+		//tent->s.clientNum = ent->s.clientNum;
+
+		//Elder: moved after ClientSpawn call
+		//Elder: added to initialize weaponmodes
+		client->ps.persistant[PERS_WEAPONMODES] |= RQ3_GRENSHORT; //set to short range
+		client->ps.persistant[PERS_WEAPONMODES] |= RQ3_KNIFEMODE; //set to slash attack
+		//Elder: debug
+		//G_Printf("In clientbegin- PERS_WEAPONMODES: %d\n", ent->client->ps.persistant[PERS_WEAPONMODES]);
 
 		if ( g_gametype.integer != GT_TOURNAMENT ) {
 			trap_SendServerCommand( -1, va("print \"%s" S_COLOR_WHITE " entered the game\n\"", client->pers.netname) );
@@ -1253,8 +1254,10 @@ void ClientSpawn(gentity_t *ent) {
 
 	//Elder: reset all RQ3 non-persistent stats
 	ent->client->ps.stats[STAT_RQ3] = 0;
+	
 	//Elder: set weaponfireNextTime amount
 	client->weaponfireNextTime = 0;
+
 	//Elder: Initialize fast reloads stuff
 	client->fastReloads = 0;
 	client->lastReloadTime = 0;
diff --git a/reaction/game/g_cmds.c b/reaction/game/g_cmds.c
index aaccd911..43ead4e7 100644
--- a/reaction/game/g_cmds.c
+++ b/reaction/game/g_cmds.c
@@ -1681,7 +1681,11 @@ void Cmd_Reload( gentity_t *ent )       {
 		trap_SendServerCommand( ent-g_entities, va("print \"You are too busy bandaging...\n\""));
 		return;
 	}
-       
+
+	//Elder: release fire button
+	//if ( (ent->client->buttons & BUTTON_ATTACK) == BUTTON_ATTACK)
+		//ent->client->buttons &= ~BUTTON_ATTACK;
+
     weapon = ent->client->ps.weapon;
     //Elder: changed to new function
     ammotoadd = ClipAmountForReload(weapon);
diff --git a/reaction/game/g_misc.c b/reaction/game/g_misc.c
index c89c99b6..8f7f553f 100644
--- a/reaction/game/g_misc.c
+++ b/reaction/game/g_misc.c
@@ -396,7 +396,7 @@ void G_BreakGlass(gentity_t *ent, vec3_t point, int mod) {
  	
 	//Elder:
 	//eventParm can only hold a byte (8-bits/255)
-	//So if we receive a huge one, we can knock it down (and-op)
+	//So if we receive a huge one, we can knock it down (shift-op)
 	//and count the number of times
 	//Once it's below 255, we can send a more appropriate event
 	//This way, the mappers can use a single func_breakable