Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 11973)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 11974)
@@ -695,8 +695,5 @@
 #}}}
 #Matlab sources  {{{1
-matlab_sources= ./shared/Matlab/matlabshared.h\
-				    ./shared/Matlab/mxGetAssignedField.cpp\
-				    ./shared/Matlab/CheckNumMatlabArguments.cpp\
-				    ./toolkits/matlab/matlabincludes.h\
+matlab_sources= ./toolkits/matlab/matlabincludes.h\
 				    ./toolkits/matlab/MatlabNArrayToNArray.cpp\
 				    ./toolkits/double/MatlabVectorToDoubleVector.cpp\
@@ -704,4 +701,6 @@
 				    ./toolkits/double/MatlabMatrixToDoubleMatrix.cpp\
 				    ./io/Matlab/matlabio.h\
+				    ./io/Matlab/CheckNumMatlabArguments.cpp\
+				    ./io/Matlab/mxGetAssignedField.cpp\
 				    ./io/Matlab/WriteMatlabData.cpp\
 				    ./io/Matlab/FetchMatlabData.cpp\
@@ -711,4 +710,5 @@
 python_sources=     ./io/Python/pythonio.h\
 				    ./io/Python/WritePythonData.cpp\
+				    ./io/Python/CheckNumPythonArguments.cpp\
 				    ./io/Python/FetchPythonData.cpp
 #}}}
@@ -934,5 +934,6 @@
 libISSM_a_SOURCES += $(bamg_sources)
 libISSM_a_SOURCES += $(kml_sources)
-libISSM_a_CXXFLAGS = -fPIC -D_SERIAL_ -D_GNU_SOURCE -fno-omit-frame-pointer -pthread -D_CPP_  $(CXXFLAGS) $(CXXOPTFLAGS) 
+dnl libISSM_a_CXXFLAGS = -fPIC -D_SERIAL_ -D_GNU_SOURCE -fno-omit-frame-pointer -pthread -D_CPP_  $(CXXFLAGS) $(CXXOPTFLAGS) 
+libISSM_a_CXXFLAGS = -D_SERIAL_ -DTRILIBRARY -DANSI_DECLARATORS -DNO_TIMER   $(CXXFLAGS) $(CXXOPTFLAGS) 
 
 if PYTHON
@@ -963,5 +964,5 @@
 bin_PROGRAMS = 
 else 
-bin_PROGRAMS = issm
+bin_PROGRAMS = issm issm2
 endif
 
@@ -974,4 +975,7 @@
 issm_SOURCES = solutions/issm.cpp
 issm_CXXFLAGS= -fPIC -D_PARALLEL_ $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) 
+issm2_SOURCES = solutions/issm2.cpp
+issm2_CXXFLAGS= $(issm_CXXFLAGS)
+
 #}}}
 #Automatic differentiation: append this fold to the end of the src/c/Makefile.am to get this Makefile.am {{{
Index: /issm/trunk-jpl/src/c/include/macros.h
===================================================================
--- /issm/trunk-jpl/src/c/include/macros.h	(revision 11973)
+++ /issm/trunk-jpl/src/c/include/macros.h	(revision 11974)
@@ -40,4 +40,5 @@
 #endif
 /*}}}*/
+
 /* MODULEBOOT/MODULEEND {{{1*/
 
@@ -62,16 +63,9 @@
 #endif //}}}
 #ifdef _HAVE_PYTHON_ //{{{2
-#define MODULEBOOT(); ModuleBoot(); \
-	try{
+#define MODULEBOOT(); ModuleBoot();  \
+	PyObject* output = PyTuple_New(NLHS); if (!output) return NULL;
 
-#define MODULEEND();  ModuleEnd(); }\
-	catch(ErrorException &exception){\
-		exception.Report(); \
-		return; \
-	}\
-	catch (exception& e) {\
-		_printf_(true,"Standard exception: %s\n",e.what());\
-		return;\
-	}
+#define MODULEEND();  ModuleEnd(); \
+						 return output;
 #endif //}}}
 #else 
@@ -97,6 +91,31 @@
 #endif
 #ifdef _HAVE_PYTHON_
-#define WRAPPER(modulename,...) void modulename(__VA_ARGS__)
+#define WRAPPER(modulename,...)  \
+\
+static PyObject* modulename(PyObject* self,PyObject* args);\
+static PyMethodDef modulename##_funcs[] = {\
+	{#modulename, (PyCFunction)modulename, METH_VARARGS, ""},\
+	{NULL,NULL,0,NULL}\
+};\
+\
+static struct PyModuleDef modulename##module= {\
+	PyModuleDef_HEAD_INIT,\
+	#modulename,   /* name of module */\
+	NULL, /* module documentation, may be NULL */\
+	-1,       /* size of per-interpreter state of the module,\
+				 or -1 if the module keeps state in global variables. */\
+	modulename##_funcs\
+};\
+\
+PyMODINIT_FUNC PyInit_##modulename(void){\
+\
+	import_array();\
+	return PyModule_Create(&modulename##module);\
+}\
+\
+static PyObject* modulename(PyObject* self,PyObject* args)
+
 #endif
+
 /*}}}*/
 /* CHECKARGUMENTS {{{1*/
@@ -105,7 +124,8 @@
 #endif
 #ifdef _HAVE_PYTHON_
-#define CHECKARGUMENTS(NLHS,NRHS,functionpointer) 
+#define CHECKARGUMENTS(NLHS,NRHS,functionpointer) CheckNumPythonArguments(args, NRHS,functionpointer)
 #endif
 /*}}}*/
 
+
 #endif
Index: /issm/trunk-jpl/src/c/toolkits/python/pythonincludes.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/python/pythonincludes.h	(revision 11973)
+++ /issm/trunk-jpl/src/c/toolkits/python/pythonincludes.h	(revision 11974)
@@ -6,13 +6,19 @@
 #define _PYTHON_INCLUDES_H_
 
+
+#include "Python.h"
+#include "arrayobject.h"
+
+
+
+#ifdef _HAVE_BOOST_
 using namespace std;
-
+#include <boost/python/def.hpp>
 #include <boost/python.hpp>
-#include <boost/python/def.hpp>
-#include <numpy/arrayobject.h>
 #include <boost/python/module.hpp>
-
 using namespace boost::python;
 typedef boost::python::numeric::array pyArray;
+#endif
+
 
 #endif
