diff --git a/src/mod/codec/mod_codec_gsm/Makefile b/src/mod/codec/mod_codec_gsm/Makefile
new file mode 100644
index 0000000000..85e90af497
--- /dev/null
+++ b/src/mod/codec/mod_codec_gsm/Makefile
@@ -0,0 +1,12 @@
+CFLAGS += -I/usr/local/include/libgsm
+LDFLAGS +=-lgsm
+
+$(MOD).so: $(MOD).c
+	$(CC) $(CFLAGS) -fPIC -c $(MOD).c -o $(MOD).o
+	$(CC) $(SOLINK) $(MOD).o -o $(MOD).so $(LDFLAGS) -lspeex
+
+all:	$(MOD).so
+
+clean:
+	rm -fr *.so *.o *~
+
diff --git a/src/mod/codec/mod_codec_gsm/mod_codec_gsm.c b/src/mod/codec/mod_codec_gsm/mod_codec_gsm.c
new file mode 100644
index 0000000000..e3eeb48cba
--- /dev/null
+++ b/src/mod/codec/mod_codec_gsm/mod_codec_gsm.c
@@ -0,0 +1,175 @@
+/* 
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II <anthmct@yahoo.com>
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ *
+ * The Initial Developer of the Original Code is
+ * Anthony Minessale II <anthmct@yahoo.com>
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * 
+ * Anthony Minessale II <anthmct@yahoo.com>
+ * Michael Jerris <mike@jerris.com>
+ *
+ * mod_codec_gsm.c -- gsm Codec Module
+ *
+ */
+#include "switch.h"
+#include "gsm.h"
+
+static const char modname[] = "mod_codec_gsm";
+
+
+static switch_status switch_gsm_init(switch_codec *codec, switch_codec_flag flags, const struct switch_codec_settings *codec_settings)
+{
+	gsm context;
+	int encoding, decoding;
+	
+	encoding = (flags & SWITCH_CODEC_FLAG_ENCODE);
+	decoding = (flags & SWITCH_CODEC_FLAG_DECODE);
+	
+	if (!(encoding || decoding)) {
+		return SWITCH_STATUS_FALSE;
+	} else {
+			context = gsm_create();
+		}
+
+		codec->private = context;
+		
+		return SWITCH_STATUS_SUCCESS;
+	
+}
+
+static switch_status switch_gsm_destroy(switch_codec *codec)
+{
+	gsm_destroy((gsm)codec->private);
+	codec->private = NULL;
+	return SWITCH_STATUS_SUCCESS;
+}
+
+
+static switch_status switch_gsm_encode(switch_codec *codec,
+								   switch_codec *other_codec,
+								   void *decoded_data,
+								   size_t decoded_data_len,
+								   void *encoded_data,
+								   size_t *encoded_data_len,
+								   unsigned int *flag)
+{
+	gsm context = codec->private;
+	int cbret = 0;
+
+	if (!context) {
+		return SWITCH_STATUS_FALSE;
+	}
+	gsm_encode(context, (void *)decoded_data, (void *)encoded_data);
+	*encoded_data_len = 33;
+
+	return SWITCH_STATUS_SUCCESS;
+}
+
+
+static switch_status switch_gsm_decode(switch_codec *codec,
+								   switch_codec *other_codec,
+								   void *encoded_data,
+								   size_t encoded_data_len,
+								   void *decoded_data,
+								   size_t *decoded_data_len,
+								   unsigned int *flag) 
+{
+	struct gsm_context *context = codec->private;
+	
+	if (!context) {
+		return SWITCH_STATUS_FALSE;
+	}
+
+
+	if (encoded_data_len % 33 == 0) {
+		int loops = (int) encoded_data_len / 33;
+		char *edp = encoded_data;
+		short *ddp = decoded_data;
+		int x;
+		unsigned int new_len = 0;
+		for(x = 0; x < loops && new_len < *decoded_data_len; x++) {
+			gsm_decode(&context, ddp, edp, 33);
+			ddp += 80;
+			edp += 10;
+			new_len += 320;
+		}
+		if (new_len <= *decoded_data_len) {
+			*decoded_data_len = new_len;
+		} else {
+			switch_console_printf(SWITCH_CHANNEL_CONSOLE, "buffer overflow!!!\n");
+			return SWITCH_STATUS_FALSE;
+		}
+	} else {
+		switch_console_printf(SWITCH_CHANNEL_CONSOLE, "yo this frame is an odd size [%d]\n", encoded_data_len);
+	}
+	
+	
+	return SWITCH_STATUS_SUCCESS;
+}
+
+/* Registration */
+
+static const switch_codec_implementation gsm_8k_implementation = {
+	/*.samples_per_second*/				8000,
+	/*.bits_per_second*/				13200,
+	/*.microseconds_per_frame*/			20000,
+	/*.samples_per_frame*/				160,
+	/*.bytes_per_frame*/				320,
+	/*.encoded_bytes_per_frame*/		33,
+	/*.number_of_channels*/				1,
+	/*.pref_frames_per_packet*/			1,
+	/*.max_frames_per_packet*/			7,
+	/*.init*/							switch_gsm_init,
+	/*.encode*/							switch_gsm_encode,
+	/*.decode*/							switch_gsm_decode,
+	/*.destroy*/						switch_gsm_destroy,
+};
+
+static const switch_codec_interface gsm_codec_interface = {
+	/*.interface_name*/					"gsm",
+	/*.codec_type*/						SWITCH_CODEC_TYPE_AUDIO,
+	/*.ianacode*/						3,
+	/*.iananame*/						"gsm",
+	/*.implementations*/				&gsm_8k_implementation,
+};
+
+static switch_loadable_module_interface gsm_module_interface = {
+	/*.module_name*/					modname,
+	/*.endpoint_interface*/				NULL,
+	/*.timer_interface*/				NULL,
+	/*.dialplan_interface*/				NULL,
+	/*.codec_interface*/				&gsm_codec_interface,
+	/*.application_interface*/			NULL
+};
+
+
+SWITCH_MOD_DECLARE(switch_status) switch_module_load(const switch_loadable_module_interface **interface, char *filename) {
+	/* connect my internal structure to the blank pointer passed to me */
+	*interface = &gsm_module_interface;
+
+	/* indicate that the module should continue to be loaded */
+	return SWITCH_STATUS_SUCCESS;
+}
+
+
+
+
+
diff --git a/src/mod/codec/mod_codec_gsm/mod_codec_gsm.vcproj b/src/mod/codec/mod_codec_gsm/mod_codec_gsm.vcproj
new file mode 100644
index 0000000000..452decbd66
--- /dev/null
+++ b/src/mod/codec/mod_codec_gsm/mod_codec_gsm.vcproj
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="mod_codec_gsm"
+	ProjectGUID="{4926323F-4EA8-4B7D-A3D3-65488725988F}"
+	RootNamespace="mod_codec_gsm"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+				CommandLine="cscript /nologo $(InputDir)..\..\..\..\w32\vsnet\getlibs.vbs Mod_Codecgsm Debug"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(InputDir)..\..\..\include&quot;;&quot;$(InputDir)..\..\..\..\libs\include&quot;;&quot;$(InputDir)..\..\..\..\libs\codec\gsm\inc&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libgsm.lib FreeSwitchCore.lib"
+				OutputFile="..\..\..\..\w32\vsnet\$(OutDir)/mod/mod_codec_gsm.dll"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="..\..\..\..\libs\codec\gsm\Debug;..\..\..\..\w32\vsnet\Debug"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/mod_codec_gsm.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/mod_codec_gsm.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+				CommandLine="cscript /nologo $(InputDir)..\..\..\..\w32\vsnet\getlibs.vbs Mod_Codecgsm Release"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="&quot;$(InputDir)..\..\..\include&quot;;&quot;$(InputDir)..\..\..\..\libs\include&quot;;&quot;$(InputDir)..\..\..\..\libs\codec\gsm\inc&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libgsm.lib FreeSwitchCore.lib"
+				OutputFile="..\..\..\..\w32\vsnet\$(OutDir)/mod/mod_codec_gsm.dll"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="..\..\..\..\libs\codec\gsm\Release;..\..\..\..\w32\vsnet\Release"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				LinkTimeCodeGeneration="1"
+				ImportLibrary="$(OutDir)/mod_codec_gsm.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="mod_codec_gsm.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/w32/vsnet/FreeSwitchCore.vcproj b/w32/vsnet/FreeSwitchCore.vcproj
index ffcfa9d626..88e6b0a5d7 100644
--- a/w32/vsnet/FreeSwitchCore.vcproj
+++ b/w32/vsnet/FreeSwitchCore.vcproj
@@ -99,7 +99,7 @@
 			/>
 			<Tool
 				Name="VCPostBuildEventTool"
-				CommandLine="xcopy $(Projectdir)..\..\conf\*.* $(Outdir)\conf\ /C /D /Y&#x0D;&#x0A;"
+				CommandLine="xcopy $(Projectdir)..\..\conf\*.* $(Outdir)\conf\ /C /D /Y&#x0D;&#x0A;md  $(Outdir)\db"
 			/>
 		</Configuration>
 		<Configuration
@@ -181,7 +181,7 @@
 			/>
 			<Tool
 				Name="VCPostBuildEventTool"
-				CommandLine="xcopy $(Projectdir)..\..\conf\*.* $(Outdir)\conf\ /C /D /Y&#x0D;&#x0A;"
+				CommandLine="xcopy $(Projectdir)..\..\conf\*.* $(Outdir)\conf\ /C /D /Y&#x0D;&#x0A;md  $(Outdir)\db"
 			/>
 		</Configuration>
 	</Configurations>
diff --git a/w32/vsnet/GetLibs.vbs b/w32/vsnet/GetLibs.vbs
index 894b0a3bf8..326d488cd7 100644
--- a/w32/vsnet/GetLibs.vbs
+++ b/w32/vsnet/GetLibs.vbs
@@ -14,6 +14,7 @@ BuildModIaxChan=False
 BuildModPortAudio=False
 BuildModSpeexCodec=False
 BuildModCodecG729=False
+BuildModCodecGSM=False
 BuildModXMPPEvent=False
 quote=Chr(34)
 ScriptDir=Left(WScript.ScriptFullName,Len(WScript.ScriptFullName)-Len(WScript.ScriptName))
@@ -49,6 +50,8 @@ If objArgs.Count >=1 Then
 			BuildModSpeexCodec=True
 		Case "Mod_CodecG729"
 			BuildModCodecG729=True
+		Case "Mod_CodecGSM"
+			BuildModCodecGSM=True
 		Case "Mod_XMPPEvent"
 			BuildModXMPPEvent=True
 		Case Else
@@ -95,6 +98,10 @@ If BuildModCodecG729 Then
 	BuildLibs_ModCodecG729 BuildDebug, BuildRelease
 End If
 
+If BuildModCodecGSM Then
+	BuildLibs_ModCodecGSM BuildDebug, BuildRelease
+End If
+
 If BuildModXMPPEvent Then
 	BuildLibs_ModXMPPEvent BuildDebug, BuildRelease
 End If
@@ -445,6 +452,23 @@ Sub BuildLibs_ModCodecG729(BuildDebug, BuildRelease)
 	End If 
 End Sub
 
+Sub BuildLibs_ModCodecGSM(BuildDebug, BuildRelease)
+	If FSO.FolderExists(LibDestDir & "codec\gsm") Then 
+		If BuildDebug Then
+			If Not FSO.FileExists(LibDestDir & "codec\gsm\Debug\libgsm.lib") Then 
+				BuildViaVCBuild LibDestDir & "codec\gsm\libgsm.vcproj", "Debug"
+			End If
+		End If
+		If BuildRelease Then
+			If Not FSO.FileExists(LibDestDir & "codec\gsm\Release\libgsm.lib") Then 
+				BuildViaVCBuild LibDestDir & "codec\gsm\libgsm.vcproj", "Release"
+			End If
+		End If
+	Else
+		Wscript.echo "Unable to download libgsm"
+	End If 
+End Sub
+
 Sub UpgradeViaDevEnv(ProjectFile)
 	Set oExec = WshShell.Exec(quote & DevEnv & quote & " " & quote & ProjectFile & quote & " /Upgrade ")
 	Do While oExec.Status <> 1