diff -ruN glpk-java-1.0.13/examples/java/ErrorDemo.java glpk-java-1.0.13-3/examples/java/ErrorDemo.java
--- glpk-java-1.0.13/examples/java/ErrorDemo.java	2010-03-10 19:45:37.000000000 +0000
+++ glpk-java-1.0.13-3/examples/java/ErrorDemo.java	2010-09-10 18:51:23.000000000 +0000
@@ -22,7 +22,6 @@
 
     static boolean forceError = true;
 
-    @Override
     public void callback(glp_tree tree) {
         glp_prob prob;
         int row;
diff -ruN glpk-java-1.0.13/examples/java/LinOrd.java glpk-java-1.0.13-3/examples/java/LinOrd.java
--- glpk-java-1.0.13/examples/java/LinOrd.java	2010-03-10 19:49:42.000000000 +0000
+++ glpk-java-1.0.13-3/examples/java/LinOrd.java	2010-09-10 18:51:23.000000000 +0000
@@ -301,7 +301,6 @@
         }
     }
 
-    @Override
     public void callback(glp_tree tree) {
         if (GLPK.glp_ios_reason(tree) == GLPKConstants.GLP_IROWGEN) {
             remove_inactive(tree);
diff -ruN glpk-java-1.0.13/swig/GlpkCallback.java glpk-java-1.0.13-3/swig/GlpkCallback.java
--- glpk-java-1.0.13/swig/GlpkCallback.java	2010-03-07 18:17:54.000000000 +0000
+++ glpk-java-1.0.13-3/swig/GlpkCallback.java	2010-09-10 18:51:23.000000000 +0000
@@ -12,9 +12,9 @@
     /**
      * callback function called by native library
      */
-    public static void callback(long lTree) {
+    public static void callback(long cPtr) {
         glp_tree tree;
-        tree = GLPK.glp_java_get_tree_object(lTree);
+        tree = new glp_tree(cPtr, false);
         for (GlpkCallbackListener listener : listeners) {
             listener.callback(tree);
         }
diff -ruN glpk-java-1.0.13/swig/glpk.i glpk-java-1.0.13-3/swig/glpk.i
--- glpk-java-1.0.13/swig/glpk.i	2010-03-10 19:37:13.000000000 +0000
+++ glpk-java-1.0.13-3/swig/glpk.i	2010-09-10 18:51:23.000000000 +0000
@@ -5,11 +5,18 @@
 %pragma(java) modulecode=%{
   static {
     try {
-      // try to load Linux library
-      System.loadLibrary("glpk_java");
+      if (System.getProperty("os.name").toLowerCase().contains("windows")) {
+        // try to load Windows library
+        System.loadLibrary("glpk_4_43_java");
+      } else {
+        // try to load Linux library
+        System.loadLibrary("glpk_java");
+      }
     } catch (UnsatisfiedLinkError e) {
-      // try to load Windows library
-      System.loadLibrary("glpk_4_43_java");
+      System.err.println(
+        "The dynamic link library for GLPK for Java could not be"
+        + "loaded.\nConsider using\njava -Djava.library.path=");
+      throw e;  
     }
   }
 %}
@@ -45,12 +52,6 @@
 int glp_java_callback_level = 0;
 int glp_java_error_occured = 0;
 jmp_buf *glp_java_callback_env[GLP_JAVA_MAX_CALLBACK_LEVEL];
-/*
- * Convert tree to object form
- */
-glp_tree *glp_java_get_tree_object(long long tree) {
-    return (glp_tree *) tree;
-}
 
 /**
  * Call back function for MIP solver
@@ -59,10 +60,7 @@
     jclass cls;
     jmethodID mid = NULL;
     JNIEnv *env = (JNIEnv *) info;
-    jlong ltree = 0;
-    jobject tree_ = NULL;
-    glp_prob *prob;
-    jlong lprob;
+    jlong ltree;
 
     glp_java_callback_level++;
     if (glp_java_callback_level >= GLP_JAVA_MAX_CALLBACK_LEVEL) {
@@ -71,12 +69,11 @@
         glp_java_error_occured = 0;
         cls = (*env)->FindClass(env, "org/gnu/glpk/GlpkCallback");
         if (cls != NULL) {
-            mid = (*env)->GetStaticMethodID(env, cls, "callback", "(J)V");
+            mid = (*env)->GetStaticMethodID(
+                env, cls, "callback", "(J)V");
         }
         if (mid != NULL) {
             *(glp_tree **)&ltree = tree;
-            prob = glp_ios_get_prob(tree);
-            *(glp_prob **)&lprob = prob;
             (*env)->CallStaticVoidMethod(env, cls, mid, ltree);
         }
         if (cls != NULL) {
@@ -144,5 +141,4 @@
 
 // Add the library to be wrapped
 %include "glpk.h"
-glp_tree *glp_java_get_tree_object(long long tree);
 
diff -ruN glpk-java-1.0.13/swig/Makefile glpk-java-1.0.13-3/swig/Makefile
--- glpk-java-1.0.13/swig/Makefile	2010-03-07 20:01:30.000000000 +0000
+++ glpk-java-1.0.13-3/swig/Makefile	2010-09-10 18:51:23.000000000 +0000
@@ -9,28 +9,34 @@
 
 all:
 	echo $(JAVA_HOME)
-	mkdir -p classes
-	mkdir -p doc
-	mkdir -p src/java
-	mkdir -p java/org/gnu/glpk
-	cp *.java java/org/gnu/glpk
-	swig $(SWIG_FLAGS) -java -package org.gnu.glpk -o src/java/glpk_wrap.c -outdir java/org/gnu/glpk glpk.i 
-	libtool --mode=compile gcc $(SWIG_FLAGS) -c -fPIC src/java/glpk_wrap.c
+	mkdir -p target/classes
+	mkdir -p target/apidocs
+	mkdir -p src/c
+	mkdir -p src/main/java/org/gnu/glpk
+	cp *.java src/main/java/org/gnu/glpk
+	swig $(SWIG_FLAGS) -java -package org.gnu.glpk -o src/c/glpk_wrap.c \
+        -outdir src/main/java/org/gnu/glpk glpk.i 
+	libtool --mode=compile gcc $(SWIG_FLAGS) -c -fPIC src/c/glpk_wrap.c
 	libtool --mode=link \
 		gcc -version-info $(VERSION_INFO) -revision $(REVISION) \
-		-g -O -o libglpk_java.la -rpath ${prefix}/lib/jni glpk_wrap.lo -lglpk 
-	javadoc -sourcepath ./java *.java -d ./doc
-	jar cf glpk-java-javadoc.jar -C ./doc .
-	jar cf glpk-java-sources.jar -C ./java .
-	javac -source 1.6 -target 1.6 -sourcepath java -d classes *.java 
-	jar cf glpk-java.jar -C ./classes .
+		-g -O -o libglpk_java.la -rpath ${prefix}/lib/jni \
+                glpk_wrap.lo -lglpk 
+	javadoc -sourcepath ./src/main/java org.gnu.glpk -d ./target/apidocs
+	jar cf glpk-java-javadoc.jar -C ./target/apidocs .
+	jar cf glpk-java-sources.jar -C ./src/main/java .
+	cd src/main/java; \
+	find . -name "*.java" > ../../../sources.txt; \
+	javac -source 1.6 -target 1.6 \
+              -d ../../../target/classes \
+              @../../../sources.txt 
+	jar cf glpk-java.jar -C ./target/classes .
 
 clean:
-	rm -f -r src java .libs
-	rm -f *.o *.la *.lo ../examples/*.class
+	rm -f -r src target .libs sources.txt
+	rm -f *.jar *.o *.la *.lo ../examples/*.class target src
 
 distclean: clean
-	rm -f *~ ../examples/*~ ../w32/*~ ../w64/*~
+	rm -f *~ ../examples/java/*~ ../w32/*~ ../w64/*~
 
 install:
 	mkdir -p -m 755 $(DESTDIR)${prefix}/lib/jni;true
diff -ruN glpk-java-1.0.13/w32/Build_JNI_with_VC10_DLL.bat glpk-java-1.0.13-3/w32/Build_JNI_with_VC10_DLL.bat
--- glpk-java-1.0.13/w32/Build_JNI_with_VC10_DLL.bat	1970-01-01 00:00:00.000000000 +0000
+++ glpk-java-1.0.13-3/w32/Build_JNI_with_VC10_DLL.bat	2010-09-10 19:15:08.000000000 +0000
@@ -0,0 +1,34 @@
+rem Build GLPK JNI DLL with Microsoft Visual Studio Express 2010
+rem NOTE: Make sure that the following variables specify correct paths:
+rem HOME, SWIG, JAVA_HOME
+
+set HOME="C:\Program Files\Microsoft Visual Studio 10.0\VC"
+set SWIG="C:\Program Files\swig\swigwin-2.0.0"
+set path_build_jni=%path%
+cd ..\swig
+mkdir target\classes
+mkdir target\apidocs
+mkdir src\main\java\org\gnu\glpk
+mkdir src\c
+copy *.java src\main\java\org\gnu\glpk
+%SWIG%\swig.exe -I..\include -java -package org.gnu.glpk -o src/c/glpk_wrap.c -outdir src/main/java/org/gnu/glpk glpk.i
+"%JAVA_HOME%\bin\javadoc.exe" -sourcepath ./src/main/java org.gnu.glpk -d ./target/apidocs
+"%JAVA_HOME%\bin\jar.exe" cf glpk-java-javadoc.jar -C ./target/apidocs .
+"%JAVA_HOME%\bin\jar.exe" cf glpk-java-sources.jar -C ./src/main/java .
+cd src\main\java
+dir /b /s *.java > ..\..\..\sources.txt
+"%JAVA_HOME%\bin\javac.exe" -d ../../../target/classes @..\..\..\sources.txt
+cd ..\..\..
+"%JAVA_HOME%\bin\jar.exe" cf glpk-java.jar -C ./target/classes .
+cd ..\w32
+set INCLUDE=
+set LIB=
+call %HOME%\bin\vcvars32.bat
+set INCLUDE=%INCLUDE%;%JAVA_HOME%\include;%JAVA_HOME%\include\win32
+%HOME%\bin\nmake.exe /f Makefile_JNI_VC_DLL
+copy ..\swig\*.jar .
+%HOME%\bin\nmake.exe /f Makefile_JNI_VC_DLL check
+path %path_build_jni%
+set INCLUDE=
+set LIB=
+pause
diff -ruN glpk-java-1.0.13/w32/Build_JNI_with_VC9_DLL.bat glpk-java-1.0.13-3/w32/Build_JNI_with_VC9_DLL.bat
--- glpk-java-1.0.13/w32/Build_JNI_with_VC9_DLL.bat	2010-03-04 23:32:36.000000000 +0000
+++ glpk-java-1.0.13-3/w32/Build_JNI_with_VC9_DLL.bat	2010-09-10 19:15:41.000000000 +0000
@@ -3,28 +3,31 @@
 rem HOME, SWIG, JAVA_HOME
 
 set HOME="C:\Program Files\Microsoft Visual Studio 9.0\VC"
-set SWIG="C:\Program Files\swig\swigwin-1.3.40"
+set SWIG="C:\Program Files\swig\swigwin-2.0.0"
 set path_build_jni=%path%
 cd ..\swig
-mkdir classes
-mkdir doc
-mkdir src\java
-mkdir java\org\gnu\glpk
-copy *.java java\org\gnu\glpk
-%SWIG%\swig.exe -I..\include -java -package org.gnu.glpk -o src/java/glpk_wrap.c -outdir java/org/gnu/glpk glpk.i
-"%JAVA_HOME%\bin\javadoc.exe" -sourcepath ./java *.java -d ./doc
-"%JAVA_HOME%\bin\jar.exe" cf glpk-java-javadoc.jar -C ./doc .
-"%JAVA_HOME%\bin\jar.exe" cf glpk-java-sources.jar -C ./java .
-"%JAVA_HOME%\bin\javac.exe" -sourcepath java -d classes *.java
-"%JAVA_HOME%\bin\jar.exe" cf glpk-java.jar -C ./classes .
+mkdir target\classes
+mkdir target\apidocs
+mkdir src\main\java\org\gnu\glpk
+mkdir src\c
+copy *.java src\main\java\org\gnu\glpk
+%SWIG%\swig.exe -I..\include -java -package org.gnu.glpk -o src/c/glpk_wrap.c -outdir src/main/java/org/gnu/glpk glpk.i
+"%JAVA_HOME%\bin\javadoc.exe" -sourcepath ./src/main/java org.gnu.glpk -d ./target/apidocs
+"%JAVA_HOME%\bin\jar.exe" cf glpk-java-javadoc.jar -C ./target/apidocs .
+"%JAVA_HOME%\bin\jar.exe" cf glpk-java-sources.jar -C ./src/main/java .
+cd src\main\java
+dir /b /s *.java > ..\..\..\sources.txt
+"%JAVA_HOME%\bin\javac.exe" -d ../../../target/classes @..\..\..\sources.txt
+cd ..\..\..
+"%JAVA_HOME%\bin\jar.exe" cf glpk-java.jar -C ./target/classes .
 cd ..\w32
 set INCLUDE=
 set LIB=
 call %HOME%\bin\vcvars32.bat
 set INCLUDE=%INCLUDE%;%JAVA_HOME%\include;%JAVA_HOME%\include\win32
-%HOME%\bin\nmake.exe /f Makefile_JNI_VC9_DLL
+%HOME%\bin\nmake.exe /f Makefile_JNI_VC_DLL
 copy ..\swig\*.jar .
-%HOME%\bin\nmake.exe /f Makefile_JNI_VC9_DLL check
+%HOME%\bin\nmake.exe /f Makefile_JNI_VC_DLL check
 path %path_build_jni%
 set INCLUDE=
 set LIB=
diff -ruN glpk-java-1.0.13/w32/Makefile_JNI_VC9_DLL glpk-java-1.0.13-3/w32/Makefile_JNI_VC9_DLL
--- glpk-java-1.0.13/w32/Makefile_JNI_VC9_DLL	2010-03-03 00:59:35.000000000 +0000
+++ glpk-java-1.0.13-3/w32/Makefile_JNI_VC9_DLL	1970-01-01 00:00:00.000000000 +0000
@@ -1,17 +0,0 @@
-# Build GLPK JNI DLL with Microsoft Visual Studio Express 2008
-GLPKVERS=4_43
-CFLAGS = /I. /nologo /W3 /O2
-
-OBJSET = \
-..\swig\src\java\glpk_wrap.obj
-
-.c.obj:
-	cl.exe $(CFLAGS) /I..\include /Fo$*.obj /c $*.c
-
-all: glpk_$(GLPKVERS)_java.dll
-
-glpk_$(GLPKVERS)_java.dll: $(OBJSET)
-        cl.exe $(CFLAGS) /LD /Feglpk_$(GLPKVERS)_java.dll ..\swig\src\java\glpk_wrap.obj glpk_$(GLPKVERS).lib
-
-check:
-	check_jni.bat
diff -ruN glpk-java-1.0.13/w32/Makefile_JNI_VC_DLL glpk-java-1.0.13-3/w32/Makefile_JNI_VC_DLL
--- glpk-java-1.0.13/w32/Makefile_JNI_VC_DLL	1970-01-01 00:00:00.000000000 +0000
+++ glpk-java-1.0.13-3/w32/Makefile_JNI_VC_DLL	2010-09-10 19:11:31.000000000 +0000
@@ -0,0 +1,17 @@
+# Build GLPK JNI DLL with Microsoft Visual Studio Express 2008
+GLPKVERS=4_43
+CFLAGS = /I. /nologo /W3 /O2
+
+OBJSET = \
+..\swig\src\c\glpk_wrap.obj
+
+.c.obj:
+	cl.exe $(CFLAGS) /I..\include /Fo$*.obj /c $*.c
+
+all: glpk_$(GLPKVERS)_java.dll
+
+glpk_$(GLPKVERS)_java.dll: $(OBJSET)
+        cl.exe $(CFLAGS) /LD /Feglpk_$(GLPKVERS)_java.dll ..\swig\src\c\glpk_wrap.obj glpk_$(GLPKVERS).lib
+
+check:
+	check_jni.bat
diff -ruN glpk-java-1.0.13/w64/Build_JNI_with_VC10_DLL.bat glpk-java-1.0.13-3/w64/Build_JNI_with_VC10_DLL.bat
--- glpk-java-1.0.13/w64/Build_JNI_with_VC10_DLL.bat	1970-01-01 00:00:00.000000000 +0000
+++ glpk-java-1.0.13-3/w64/Build_JNI_with_VC10_DLL.bat	2010-09-10 19:59:25.000000000 +0000
@@ -0,0 +1,34 @@
+rem Build GLPK JNI DLL with Microsoft Visual Studio Express 2010
+rem NOTE: Make sure that the following variables specify correct paths:
+rem HOME, SWIG, JAVA_HOME
+
+set HOME="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC"
+set SWIG="C:\Program Files (x86)\swig\swigwin-2.0.0"
+set path_build_jni=%path%
+cd ..\swig
+mkdir target\classes
+mkdir target\apidocs
+mkdir src\main\java\org\gnu\glpk
+mkdir src\c
+copy *.java src\main\java\org\gnu\glpk
+%SWIG%\swig.exe -I..\include -java -package org.gnu.glpk -o src/c/glpk_wrap.c -outdir src/main/java/org/gnu/glpk glpk.i
+"%JAVA_HOME%\bin\javadoc.exe" -sourcepath ./src/main/java org.gnu.glpk -d ./target/apidocs
+"%JAVA_HOME%\bin\jar.exe" cf glpk-java-javadoc.jar -C ./target/apidocs .
+"%JAVA_HOME%\bin\jar.exe" cf glpk-java-sources.jar -C ./src/main/java .
+cd main\java
+dir /b /s *.java > ..\..\sources.txt
+"%JAVA_HOME%\bin\javac.exe" -d ../../target/classes @..\..\sources.txt
+cd ..\..
+"%JAVA_HOME%\bin\jar.exe" cf glpk-java.jar -C ./target/classes .
+cd ..\w64
+set INCLUDE=
+set LIB=
+call %HOME%\vcvarsall.bat x64
+set INCLUDE=%INCLUDE%;%JAVA_HOME%\include;%JAVA_HOME%\include\win32
+%HOME%\bin\nmake.exe /f Makefile_JNI_VC_DLL
+copy ..\swig\*.jar .
+%HOME%\bin\nmake.exe /f Makefile_JNI_VC_DLL check
+path %path_build_jni%
+set INCLUDE=
+set LIB=
+pause
diff -ruN glpk-java-1.0.13/w64/Build_JNI_with_VC9_DLL.bat glpk-java-1.0.13-3/w64/Build_JNI_with_VC9_DLL.bat
--- glpk-java-1.0.13/w64/Build_JNI_with_VC9_DLL.bat	2010-03-04 23:32:36.000000000 +0000
+++ glpk-java-1.0.13-3/w64/Build_JNI_with_VC9_DLL.bat	2010-09-10 19:59:07.000000000 +0000
@@ -3,28 +3,31 @@
 rem HOME, SWIG, JAVA_HOME
 
 set HOME="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC"
-set SWIG="C:\Program Files (x86)\swig\swigwin-1.3.40"
+set SWIG="C:\Program Files (x86)\swig\swigwin-2.0.0"
 set path_build_jni=%path%
 cd ..\swig
-mkdir classes
-mkdir doc
-mkdir src\java
-mkdir java\org\gnu\glpk
-copy *.java java\org\gnu\glpk
-%SWIG%\swig.exe -I..\include -java -package org.gnu.glpk -o src/java/glpk_wrap.c -outdir java/org/gnu/glpk glpk.i
-"%JAVA_HOME%\bin\javadoc.exe" -sourcepath ./java *.java -d ./doc
-"%JAVA_HOME%\bin\jar.exe" cf glpk-java-javadoc.jar -C ./doc .
-"%JAVA_HOME%\bin\jar.exe" cf glpk-java-sources.jar -C ./java .
-"%JAVA_HOME%\bin\javac.exe" -sourcepath java -d classes *.java
-"%JAVA_HOME%\bin\jar.exe" cf glpk-java.jar -C ./classes .
+mkdir target\classes
+mkdir target\apidocs
+mkdir src\main\java\org\gnu\glpk
+mkdir src\c
+copy *.java src\main\java\org\gnu\glpk
+%SWIG%\swig.exe -I..\include -java -package org.gnu.glpk -o src/c/glpk_wrap.c -outdir src/main/java/org/gnu/glpk glpk.i
+"%JAVA_HOME%\bin\javadoc.exe" -sourcepath ./src/main/java org.gnu.glpk -d ./target/apidocs
+"%JAVA_HOME%\bin\jar.exe" cf glpk-java-javadoc.jar -C ./target/apidocs .
+"%JAVA_HOME%\bin\jar.exe" cf glpk-java-sources.jar -C ./src/main/java .
+cd src\main\java
+dir /b /s *.java > ..\..\..\sources.txt
+"%JAVA_HOME%\bin\javac.exe" -d ../../../target/classes @..\..\..\sources.txt
+cd ..\..\..
+"%JAVA_HOME%\bin\jar.exe" cf glpk-java.jar -C ./target/classes .
 cd ..\w64
 set INCLUDE=
 set LIB=
 call %HOME%\bin\vcvars64.bat
 set INCLUDE=%INCLUDE%;%JAVA_HOME%\include;%JAVA_HOME%\include\win32
-%HOME%\bin\nmake.exe /f Makefile_JNI_VC9_DLL
+%HOME%\bin\nmake.exe /f Makefile_JNI_VC_DLL
 copy ..\swig\*.jar .
-%HOME%\bin\nmake.exe /f Makefile_JNI_VC9_DLL check
+%HOME%\bin\nmake.exe /f Makefile_JNI_VC_DLL check
 path %path_build_jni%
 set INCLUDE=
 set LIB=
diff -ruN glpk-java-1.0.13/w64/Makefile_JNI_VC9_DLL glpk-java-1.0.13-3/w64/Makefile_JNI_VC9_DLL
--- glpk-java-1.0.13/w64/Makefile_JNI_VC9_DLL	2010-03-03 00:59:35.000000000 +0000
+++ glpk-java-1.0.13-3/w64/Makefile_JNI_VC9_DLL	1970-01-01 00:00:00.000000000 +0000
@@ -1,17 +0,0 @@
-# Build GLPK JNI DLL with Microsoft Visual Studio Express 2008
-GLPKVERS=4_43
-CFLAGS = /I. /nologo /W3 /O2
-
-OBJSET = \
-..\swig\src\java\glpk_wrap.obj
-
-.c.obj:
-	cl.exe $(CFLAGS) /I..\include /Fo$*.obj /c $*.c
-
-all: glpk_$(GLPKVERS)_java.dll
-
-glpk_$(GLPKVERS)_java.dll: $(OBJSET)
-        cl.exe $(CFLAGS) /LD /Feglpk_$(GLPKVERS)_java.dll ..\swig\src\java\glpk_wrap.obj glpk_$(GLPKVERS).lib
-
-check:
-	check_jni.bat
diff -ruN glpk-java-1.0.13/w64/Makefile_JNI_VC_DLL glpk-java-1.0.13-3/w64/Makefile_JNI_VC_DLL
--- glpk-java-1.0.13/w64/Makefile_JNI_VC_DLL	1970-01-01 00:00:00.000000000 +0000
+++ glpk-java-1.0.13-3/w64/Makefile_JNI_VC_DLL	2010-09-10 19:11:31.000000000 +0000
@@ -0,0 +1,17 @@
+# Build GLPK JNI DLL with Microsoft Visual Studio Express 2008
+GLPKVERS=4_43
+CFLAGS = /I. /nologo /W3 /O2
+
+OBJSET = \
+..\swig\src\c\glpk_wrap.obj
+
+.c.obj:
+	cl.exe $(CFLAGS) /I..\include /Fo$*.obj /c $*.c
+
+all: glpk_$(GLPKVERS)_java.dll
+
+glpk_$(GLPKVERS)_java.dll: $(OBJSET)
+        cl.exe $(CFLAGS) /LD /Feglpk_$(GLPKVERS)_java.dll ..\swig\src\c\glpk_wrap.obj glpk_$(GLPKVERS).lib
+
+check:
+	check_jni.bat
