diff --git a/.gitignore b/.gitignore
index 1534ef1..38e19be 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,5 +3,3 @@
 /dexlib/build
 /smali/build
 /util/build
-/maven-smali-plugin/target
-/smali-integration-tests/target
diff --git a/maven-smali-plugin/.gitignore b/maven-smali-plugin/.gitignore
deleted file mode 100644
index ea8c4bf..0000000
--- a/maven-smali-plugin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target
diff --git a/maven-smali-plugin/pom.xml b/maven-smali-plugin/pom.xml
deleted file mode 100644
index 084d877..0000000
--- a/maven-smali-plugin/pom.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<project>
-    <parent>
-        <artifactId>smali-pom</artifactId>
-        <groupId>org.jf</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.jf</groupId>
-    <artifactId>maven-smali-plugin</artifactId>
-    <version>${aversion}</version>
-    <packaging>maven-plugin</packaging>
-    <name>maven-smali-plugin Maven Mojo</name>
-    <url>http://maven.apache.org</url>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-plugin-api</artifactId>
-            <version>2.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-project</artifactId>
-            <version>2.0.8</version>
-        </dependency>
-        <dependency>
-            <groupId>org.jf</groupId>
-            <artifactId>smali</artifactId>
-            <version>${version}</version>
-        </dependency>
-    </dependencies>
-</project>
diff --git a/maven-smali-plugin/src/main/java/org/jf/SmaliMojo.java b/maven-smali-plugin/src/main/java/org/jf/SmaliMojo.java
deleted file mode 100644
index 1bfaac5..0000000
--- a/maven-smali-plugin/src/main/java/org/jf/SmaliMojo.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2001-2005 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * As per the Apache license requirements, this file has been modified
- * from its original state.
- *
- * Such modifications are Copyright (C) 2010 Ben Gruver, and are released
- * under the original license
- */
-
-package org.jf;
-
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.project.MavenProject;
-import org.jf.smali.main;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Assembles files in the smali assembly language
- *
- * @goal assemble
- *
- * @phase compile
- */
-public class SmaliMojo
-    extends AbstractMojo
-{
-    /**
-     * The maven project.
-     *
-     * @parameter expression="${project}"
-     * @required
-     * @readonly
-     */
-    private MavenProject project;
-
-    /**
-     * @parameter default-value="${basedir}/src/main/smali"
-     * @required
-     */
-    private File sourceDirectory;
-
-    /**
-     * @parameter default-value="${project.build.directory}/classes.dex"
-     * @required
-     */
-    private File outputFile;
-
-    /**
-     * @parameter default-value=null
-     */
-    private File dumpFile;
-
-    public void execute()
-        throws MojoExecutionException
-    {
-        outputFile.getParentFile().mkdirs();
-
-        try
-        {
-            List<String> args = new ArrayList<String>();
-            args.add("-o");
-            args.add(outputFile.getAbsolutePath());
-
-
-            if (dumpFile != null) {
-                args.add("-D");
-                args.add(dumpFile.getAbsolutePath());
-            }
-
-            args.add(sourceDirectory.getAbsolutePath());
-
-            main.main(args.toArray(new String[args.size()]));
-        } catch (Exception ex)
-        {
-            throw new MojoExecutionException("oops!", ex);
-        }
-    }
-}
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 69028b8..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.jf</groupId>
-    <artifactId>smali-pom</artifactId>
-    <version>1.0-SNAPSHOT</version>
-    <packaging>pom</packaging>
-    <properties>
-        <aversion>1.3.4-dev</aversion>
-    </properties>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.5</source>
-                    <target>1.5</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    <modules>
-        <module>dexlib</module>
-        <module>smali</module>
-        <module>baksmali</module>
-        <module>util</module>
-    </modules>
-    <profiles>
-        <profile>
-            <id>integration-tests</id>
-                <modules>
-                    <module>dexlib</module>
-                    <module>smali</module>
-                    <module>baksmali</module>
-                    <module>util</module>
-                    <module>maven-smali-plugin</module>
-                    <module>smali-integration-tests</module>
-                </modules>
-        </profile>
-    </profiles>
-</project>
diff --git a/smali-integration-tests/pom.xml b/smali-integration-tests/pom.xml
deleted file mode 100644
index 1679941..0000000
--- a/smali-integration-tests/pom.xml
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.jf</groupId>
-    <artifactId>smali-integration-tests</artifactId>
-    <version>${aversion}</version>
-    <parent>
-        <groupId>org.jf</groupId>
-        <artifactId>smali-pom</artifactId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.jf</groupId>
-                <artifactId>maven-smali-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>junit-tests</id>
-                        <phase>integration-test</phase>
-                        <goals>
-                            <goal>assemble</goal>
-                        </goals>
-                        <configuration>
-                            <sourceDirectory>src/test/smali/junit-tests</sourceDirectory>
-                            <outputFile>target/junit-tests/classes.dex</outputFile>
-                            <dumpFile>target/junit-tests/classes.dump</dumpFile>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>jumbo-string-tests</id>
-                        <phase>integration-test</phase>
-                        <goals>
-                            <goal>assemble</goal>
-                        </goals>
-                        <configuration>
-                            <sourceDirectory>src/test/smali/jumbo-string-tests</sourceDirectory>
-                            <outputFile>target/jumbo-string-tests/classes.dex</outputFile>
-                            <dumpFile>target/jumbo-string-tests/classes.dump</dumpFile>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>junit-tests</id>
-                        <phase>integration-test</phase>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                        <configuration>
-                            <appendAssemblyId>false</appendAssemblyId>
-                            <finalName>junit-tests</finalName>
-                            <descriptors>
-                                <descriptor>src/assemble/junit-tests.xml</descriptor>
-                            </descriptors>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>jumbo-string-tests</id>
-                        <phase>integration-test</phase>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                        <configuration>
-                            <appendAssemblyId>false</appendAssemblyId>
-                            <finalName>jumbo-string-tests</finalName>
-                            <descriptors>
-                                <descriptor>src/assemble/jumbo-string-tests.xml</descriptor>
-                            </descriptors>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>com.jayway.maven.plugins.android.generation1.plugins</groupId>
-                <artifactId>maven-adb-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>junit-tests</id>
-                        <phase>integration-test</phase>
-                        <goals>
-                            <goal>push</goal>
-                        </goals>
-                        <configuration>
-                            <sourceFileOrDirectory>${project.build.directory}/junit-tests.zip</sourceFileOrDirectory>
-                            <destinationFileOrDirectory>/data/local/junit-tests.zip</destinationFileOrDirectory>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>jumbo-string-tests</id>
-                        <phase>integration-test</phase>
-                        <goals>
-                            <goal>push</goal>
-                        </goals>
-                        <configuration>
-                            <sourceFileOrDirectory>${project.build.directory}/jumbo-string-tests.zip</sourceFileOrDirectory>
-                            <destinationFileOrDirectory>/data/local/jumbo-string-tests.zip</destinationFileOrDirectory>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>exec-maven-plugin</artifactId>
-                <version>1.1</version>
-                <executions>
-                    <execution>
-                        <id>junit-tests</id>
-                        <phase>integration-test</phase>
-                        <goals>
-                            <goal>exec</goal>
-                        </goals>
-                        <configuration>
-                            <executable>adb</executable>
-                            <arguments>
-                                <argument>shell</argument>
-                                <argument>dalvikvm</argument>
-                                <argument>-cp</argument>
-                                <argument>/data/local/junit-4.6.zip:/data/local/junit-tests.zip</argument>
-                                <argument>org/junit/runner/JUnitCore</argument>
-                                <argument>AllTests</argument>
-                            </arguments>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>jumbo-string-tests</id>
-                        <phase>integration-test</phase>
-                        <goals>
-                            <goal>exec</goal>
-                        </goals>
-                        <configuration>
-                            <executable>adb</executable>
-                            <arguments>
-                                <argument>shell</argument>
-                                <argument>dalvikvm</argument>
-                                <argument>-cp</argument>
-                                <argument>/data/local/junit-4.6.zip:/data/local/jumbo-string-tests.zip</argument>
-                                <argument>org/junit/runner/JUnitCore</argument>
-                                <argument>AllTests</argument>
-                            </arguments>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-</project>
diff --git a/util/pom.xml b/util/pom.xml
deleted file mode 100644
index 82687fe..0000000
--- a/util/pom.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.jf</groupId>
-    <artifactId>util</artifactId>
-    <version>${aversion}</version>
-    <parent>
-      <groupId>org.jf</groupId>
-      <artifactId>smali-pom</artifactId>
-      <version>1.0-SNAPSHOT</version>
-    </parent>
-    <dependencies>
-        <dependency>
-            <groupId>commons-cli</groupId>
-            <artifactId>commons-cli</artifactId>
-            <version>1.2</version>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.6</version>
-        </dependency>
-    </dependencies>
-</project>
\ No newline at end of file
