From 073bc19c9c4b754171d188d5b80637374c476f80 Mon Sep 17 00:00:00 2001
From: SebastianEbert <sebastian.ebert@tu-dresden.de>
Date: Mon, 6 Dec 2021 15:15:11 +0100
Subject: [PATCH] removed bazel build, fixed dependencies, removed
 non-core-packages

---
 .classpath                                    |  19 --
 .hgignore                                     |  25 --
 .rosinstall                                   |   4 -
 3rdparty/BUILD                                |   0
 3rdparty/jvm/com/google/code/findbugs/BUILD   |  12 -
 3rdparty/jvm/com/google/guava/BUILD           |  15 -
 3rdparty/jvm/commons_pool/BUILD               |  12 -
 3rdparty/jvm/dnsjava/BUILD                    |  15 -
 3rdparty/jvm/io/netty/BUILD                   |  12 -
 3rdparty/jvm/junit/BUILD                      |  12 -
 3rdparty/jvm/org/apache/commons/BUILD         |  76 -----
 3rdparty/jvm/org/apache/ws/commons/BUILD      |  16 -
 3rdparty/jvm/org/mockito/BUILD                |  12 -
 3rdparty/jvm/org/ros/rosjava_bootstrap/BUILD  |  33 ---
 3rdparty/jvm/org/ros/rosjava_messages/BUILD   |  89 ------
 3rdparty/jvm/xml_apis/BUILD                   |  12 -
 3rdparty/workspace.bzl                        |  47 ---
 CMakeLists.txt                                |  34 ---
 WORKSPACE                                     |   9 -
 bazel/BUILD.bazel                             |   0
 bazel/repositories.bzl                        |  30 --
 build.gradle                                  |   2 +-
 buildscript.gradle                            |  50 ++++
 dependencies.yaml                             |  86 ------
 misc/rosjava_formatter.xml                    | 279 ------------------
 misc/rosjava_import_order.importorder         |   6 -
 misc/rospack_nosubdirs                        |   0
 rosjava/build.gradle                          |   5 -
 rosjava_benchmarks/build.gradle               |  24 --
 .../scripts/pubsub_benchmark.py               |  55 ----
 .../rosjava_benchmarks/MessagesBenchmark.java |  92 ------
 .../rosjava_benchmarks/PubsubBenchmark.java   |  97 ------
 .../TransformBenchmark.java                   | 105 -------
 rosjava_geometry/build.gradle                 |  20 --
 .../ros/rosjava_geometry/FrameTransform.java  | 152 ----------
 .../rosjava_geometry/FrameTransformTree.java  | 259 ----------------
 .../rosjava_geometry/LazyFrameTransform.java  |  61 ----
 .../org/ros/rosjava_geometry/Quaternion.java  | 210 -------------
 .../org/ros/rosjava_geometry/Transform.java   | 190 ------------
 .../org/ros/rosjava_geometry/Vector3.java     | 188 ------------
 .../ros/rosjava_geometry/package-info.java    |  20 --
 .../FrameTransformTreeTest.java               | 256 ----------------
 .../ros/rosjava_geometry/QuaternionTest.java  | 101 -------
 .../ros/rosjava_geometry/TransformTest.java   | 120 --------
 .../org/ros/rosjava_geometry/Vector3Test.java |  70 -----
 rosjava_test/build.gradle                     |  24 --
 rosjava_test/scripts/serialized_message.py    |  37 ---
 .../org/ros/MessageSerializationTestNode.java |  63 ----
 .../java/org/ros/ParameterServerTestNode.java | 136 ---------
 .../java/org/ros/PassthroughTestNode.java     |  97 ------
 .../main/java/org/ros/SlaveApiTestNode.java   |  86 ------
 rosjava_tutorial_pubsub/BUILD.bazel           |  13 -
 rosjava_tutorial_pubsub/build.gradle          |  26 --
 .../ros/rosjava_tutorial_pubsub/Listener.java |  50 ----
 .../ros/rosjava_tutorial_pubsub/Talker.java   |  72 -----
 rosjava_tutorial_right_hand_rule/build.gradle |  25 --
 .../RightHandRule.java                        |  61 ----
 .../world/maze-erratic.world                  |  63 ----
 .../world/maze.png                            | Bin 7098 -> 0 bytes
 rosjava_tutorial_services/build.gradle        |  23 --
 .../ros/rosjava_tutorial_services/Client.java |  65 ----
 .../ros/rosjava_tutorial_services/Server.java |  49 ---
 settings.gradle                               |   6 -
 63 files changed, 51 insertions(+), 3777 deletions(-)
 delete mode 100644 .classpath
 delete mode 100644 .hgignore
 delete mode 100644 .rosinstall
 delete mode 100644 3rdparty/BUILD
 delete mode 100644 3rdparty/jvm/com/google/code/findbugs/BUILD
 delete mode 100644 3rdparty/jvm/com/google/guava/BUILD
 delete mode 100644 3rdparty/jvm/commons_pool/BUILD
 delete mode 100644 3rdparty/jvm/dnsjava/BUILD
 delete mode 100644 3rdparty/jvm/io/netty/BUILD
 delete mode 100644 3rdparty/jvm/junit/BUILD
 delete mode 100644 3rdparty/jvm/org/apache/commons/BUILD
 delete mode 100644 3rdparty/jvm/org/apache/ws/commons/BUILD
 delete mode 100644 3rdparty/jvm/org/mockito/BUILD
 delete mode 100644 3rdparty/jvm/org/ros/rosjava_bootstrap/BUILD
 delete mode 100644 3rdparty/jvm/org/ros/rosjava_messages/BUILD
 delete mode 100644 3rdparty/jvm/xml_apis/BUILD
 delete mode 100644 3rdparty/workspace.bzl
 delete mode 100644 CMakeLists.txt
 delete mode 100644 WORKSPACE
 delete mode 100644 bazel/BUILD.bazel
 delete mode 100644 bazel/repositories.bzl
 create mode 100644 buildscript.gradle
 delete mode 100644 dependencies.yaml
 delete mode 100644 misc/rosjava_formatter.xml
 delete mode 100644 misc/rosjava_import_order.importorder
 delete mode 100644 misc/rospack_nosubdirs
 delete mode 100644 rosjava_benchmarks/build.gradle
 delete mode 100755 rosjava_benchmarks/scripts/pubsub_benchmark.py
 delete mode 100644 rosjava_benchmarks/src/main/java/org/ros/rosjava_benchmarks/MessagesBenchmark.java
 delete mode 100644 rosjava_benchmarks/src/main/java/org/ros/rosjava_benchmarks/PubsubBenchmark.java
 delete mode 100644 rosjava_benchmarks/src/main/java/org/ros/rosjava_benchmarks/TransformBenchmark.java
 delete mode 100644 rosjava_geometry/build.gradle
 delete mode 100644 rosjava_geometry/src/main/java/org/ros/rosjava_geometry/FrameTransform.java
 delete mode 100644 rosjava_geometry/src/main/java/org/ros/rosjava_geometry/FrameTransformTree.java
 delete mode 100644 rosjava_geometry/src/main/java/org/ros/rosjava_geometry/LazyFrameTransform.java
 delete mode 100644 rosjava_geometry/src/main/java/org/ros/rosjava_geometry/Quaternion.java
 delete mode 100644 rosjava_geometry/src/main/java/org/ros/rosjava_geometry/Transform.java
 delete mode 100644 rosjava_geometry/src/main/java/org/ros/rosjava_geometry/Vector3.java
 delete mode 100644 rosjava_geometry/src/main/java/org/ros/rosjava_geometry/package-info.java
 delete mode 100644 rosjava_geometry/src/test/java/org/ros/rosjava_geometry/FrameTransformTreeTest.java
 delete mode 100644 rosjava_geometry/src/test/java/org/ros/rosjava_geometry/QuaternionTest.java
 delete mode 100644 rosjava_geometry/src/test/java/org/ros/rosjava_geometry/TransformTest.java
 delete mode 100644 rosjava_geometry/src/test/java/org/ros/rosjava_geometry/Vector3Test.java
 delete mode 100644 rosjava_test/build.gradle
 delete mode 100644 rosjava_test/scripts/serialized_message.py
 delete mode 100644 rosjava_test/src/main/java/org/ros/MessageSerializationTestNode.java
 delete mode 100644 rosjava_test/src/main/java/org/ros/ParameterServerTestNode.java
 delete mode 100644 rosjava_test/src/main/java/org/ros/PassthroughTestNode.java
 delete mode 100644 rosjava_test/src/main/java/org/ros/SlaveApiTestNode.java
 delete mode 100644 rosjava_tutorial_pubsub/BUILD.bazel
 delete mode 100644 rosjava_tutorial_pubsub/build.gradle
 delete mode 100644 rosjava_tutorial_pubsub/src/main/java/org/ros/rosjava_tutorial_pubsub/Listener.java
 delete mode 100644 rosjava_tutorial_pubsub/src/main/java/org/ros/rosjava_tutorial_pubsub/Talker.java
 delete mode 100644 rosjava_tutorial_right_hand_rule/build.gradle
 delete mode 100644 rosjava_tutorial_right_hand_rule/src/main/java/org/ros/rosjava_tutorial_right_hand_rule/RightHandRule.java
 delete mode 100644 rosjava_tutorial_right_hand_rule/world/maze-erratic.world
 delete mode 100644 rosjava_tutorial_right_hand_rule/world/maze.png
 delete mode 100644 rosjava_tutorial_services/build.gradle
 delete mode 100644 rosjava_tutorial_services/src/main/java/org/ros/rosjava_tutorial_services/Client.java
 delete mode 100644 rosjava_tutorial_services/src/main/java/org/ros/rosjava_tutorial_services/Server.java

diff --git a/.classpath b/.classpath
deleted file mode 100644
index 0af71fdd..00000000
--- a/.classpath
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="apache_xmlrpc_client/src/main/java"/>
-	<classpathentry kind="src" path="apache_xmlrpc_common/src/main/java"/>
-	<classpathentry kind="src" path="apache_xmlrpc_server/src/main/java"/>
-	<classpathentry kind="src" path="message_generation_tests/src/test/java"/>
-	<classpathentry kind="src" path="rosjava_benchmarks/src/main/java"/>
-	<classpathentry kind="src" path="rosjava_geometry/src/main/java"/>
-	<classpathentry kind="src" path="rosjava_geometry/src/test/java"/>
-	<classpathentry kind="src" path="rosjava_test/src/main/java"/>
-	<classpathentry kind="src" path="rosjava_tutorial_pubsub/src/main/java"/>
-	<classpathentry kind="src" path="rosjava_tutorial_right_hand_rule/src/main/java"/>
-	<classpathentry kind="src" path="rosjava_tutorial_services/src/main/java"/>
-	<classpathentry kind="src" path="rosjava/src/main/java"/>
-	<classpathentry kind="src" path="rosjava/src/test/java"/>
-	<classpathentry kind="lib" path="gradle/wrapper/gradle-wrapper.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/.hgignore b/.hgignore
deleted file mode 100644
index 7cd5193f..00000000
--- a/.hgignore
+++ /dev/null
@@ -1,25 +0,0 @@
-syntax: glob
-*.class
-*.dex
-*.orig
-*.swp
-*.pyc
-*.DS_Store
-*~
-*.log
-*.ap_
-*.apk
-.cproject
-.settings
-.classpath
-.project
-.gradle
-target
-build
-dist
-msg_gen
-srv_gen
-gen
-libs
-bin
-docs/src/main/sphinx/conf.py
diff --git a/.rosinstall b/.rosinstall
deleted file mode 100644
index e08632f8..00000000
--- a/.rosinstall
+++ /dev/null
@@ -1,4 +0,0 @@
-- git:
-    local-name: rosjava_core
-    uri: https://github.com/rosjava/rosjava_core/
-    version: hydro-devel
diff --git a/3rdparty/BUILD b/3rdparty/BUILD
deleted file mode 100644
index e69de29b..00000000
diff --git a/3rdparty/jvm/com/google/code/findbugs/BUILD b/3rdparty/jvm/com/google/code/findbugs/BUILD
deleted file mode 100644
index 2a23982e..00000000
--- a/3rdparty/jvm/com/google/code/findbugs/BUILD
+++ /dev/null
@@ -1,12 +0,0 @@
-# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
-java_library(
-    name = "jsr305",
-    exports = [
-        "//external:jar/com/google/code/findbugs/jsr305"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
diff --git a/3rdparty/jvm/com/google/guava/BUILD b/3rdparty/jvm/com/google/guava/BUILD
deleted file mode 100644
index 3cb65a2e..00000000
--- a/3rdparty/jvm/com/google/guava/BUILD
+++ /dev/null
@@ -1,15 +0,0 @@
-# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
-java_library(
-    name = "guava",
-    exports = [
-        "//external:jar/com/google/guava/guava"
-    ],
-    runtime_deps = [
-        "//3rdparty/jvm/com/google/code/findbugs:jsr305"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
diff --git a/3rdparty/jvm/commons_pool/BUILD b/3rdparty/jvm/commons_pool/BUILD
deleted file mode 100644
index 0bbfd10c..00000000
--- a/3rdparty/jvm/commons_pool/BUILD
+++ /dev/null
@@ -1,12 +0,0 @@
-# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
-java_library(
-    name = "commons_pool",
-    exports = [
-        "//external:jar/commons_pool/commons_pool"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
diff --git a/3rdparty/jvm/dnsjava/BUILD b/3rdparty/jvm/dnsjava/BUILD
deleted file mode 100644
index 7ac97e03..00000000
--- a/3rdparty/jvm/dnsjava/BUILD
+++ /dev/null
@@ -1,15 +0,0 @@
-# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
-java_library(
-    name = "dnsjava",
-    exports = [
-        "//external:jar/dnsjava/dnsjava"
-    ],
-    runtime_deps = [
-        "//3rdparty/jvm/junit:junit"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
diff --git a/3rdparty/jvm/io/netty/BUILD b/3rdparty/jvm/io/netty/BUILD
deleted file mode 100644
index 42fed0c4..00000000
--- a/3rdparty/jvm/io/netty/BUILD
+++ /dev/null
@@ -1,12 +0,0 @@
-# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
-java_library(
-    name = "netty",
-    exports = [
-        "//external:jar/io/netty/netty"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
diff --git a/3rdparty/jvm/junit/BUILD b/3rdparty/jvm/junit/BUILD
deleted file mode 100644
index 7be4bd96..00000000
--- a/3rdparty/jvm/junit/BUILD
+++ /dev/null
@@ -1,12 +0,0 @@
-# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
-java_library(
-    name = "junit",
-    exports = [
-        "//external:jar/junit/junit"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
diff --git a/3rdparty/jvm/org/apache/commons/BUILD b/3rdparty/jvm/org/apache/commons/BUILD
deleted file mode 100644
index 3c6c77d7..00000000
--- a/3rdparty/jvm/org/apache/commons/BUILD
+++ /dev/null
@@ -1,76 +0,0 @@
-# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
-java_library(
-    name = "com_springsource_org_apache_commons_codec",
-    exports = [
-        "//external:jar/org/apache/commons/com_springsource_org_apache_commons_codec"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
-
-java_library(
-    name = "com_springsource_org_apache_commons_httpclient",
-    exports = [
-        "//external:jar/org/apache/commons/com_springsource_org_apache_commons_httpclient"
-    ],
-    runtime_deps = [
-        ":com_springsource_org_apache_commons_codec",
-        ":com_springsource_org_apache_commons_logging"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
-
-java_library(
-    name = "com_springsource_org_apache_commons_io",
-    exports = [
-        "//external:jar/org/apache/commons/com_springsource_org_apache_commons_io"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
-
-java_library(
-    name = "com_springsource_org_apache_commons_lang",
-    exports = [
-        "//external:jar/org/apache/commons/com_springsource_org_apache_commons_lang"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
-
-java_library(
-    name = "com_springsource_org_apache_commons_logging",
-    exports = [
-        "//external:jar/org/apache/commons/com_springsource_org_apache_commons_logging"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
-
-java_library(
-    name = "com_springsource_org_apache_commons_net",
-    exports = [
-        "//external:jar/org/apache/commons/com_springsource_org_apache_commons_net"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
diff --git a/3rdparty/jvm/org/apache/ws/commons/BUILD b/3rdparty/jvm/org/apache/ws/commons/BUILD
deleted file mode 100644
index c538d3b9..00000000
--- a/3rdparty/jvm/org/apache/ws/commons/BUILD
+++ /dev/null
@@ -1,16 +0,0 @@
-# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
-java_library(
-    name = "ws_commons_util",
-    exports = [
-        "//external:jar/org/apache/ws/commons/ws_commons_util"
-    ],
-    runtime_deps = [
-        "//3rdparty/jvm/junit:junit",
-        "//3rdparty/jvm/xml_apis:xml_apis"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
diff --git a/3rdparty/jvm/org/mockito/BUILD b/3rdparty/jvm/org/mockito/BUILD
deleted file mode 100644
index 025c073b..00000000
--- a/3rdparty/jvm/org/mockito/BUILD
+++ /dev/null
@@ -1,12 +0,0 @@
-# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
-java_library(
-    name = "mockito_all",
-    exports = [
-        "//external:jar/org/mockito/mockito_all"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
diff --git a/3rdparty/jvm/org/ros/rosjava_bootstrap/BUILD b/3rdparty/jvm/org/ros/rosjava_bootstrap/BUILD
deleted file mode 100644
index b74ab703..00000000
--- a/3rdparty/jvm/org/ros/rosjava_bootstrap/BUILD
+++ /dev/null
@@ -1,33 +0,0 @@
-# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
-java_library(
-    name = "gradle_plugins",
-    exports = [
-        "//external:jar/org/ros/rosjava_bootstrap/gradle_plugins"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
-
-java_library(
-    name = "message_generation",
-    exports = [
-        "//external:jar/org/ros/rosjava_bootstrap/message_generation"
-    ],
-    runtime_deps = [
-        "//3rdparty/jvm/com/google/guava:guava",
-        "//3rdparty/jvm/commons_pool:commons_pool",
-        "//3rdparty/jvm/io/netty:netty",
-        "//3rdparty/jvm/org/apache/commons:com_springsource_org_apache_commons_codec",
-        "//3rdparty/jvm/org/apache/commons:com_springsource_org_apache_commons_io",
-        "//3rdparty/jvm/org/apache/commons:com_springsource_org_apache_commons_lang",
-        ":gradle_plugins"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
diff --git a/3rdparty/jvm/org/ros/rosjava_messages/BUILD b/3rdparty/jvm/org/ros/rosjava_messages/BUILD
deleted file mode 100644
index 91fd375d..00000000
--- a/3rdparty/jvm/org/ros/rosjava_messages/BUILD
+++ /dev/null
@@ -1,89 +0,0 @@
-# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
-java_library(
-    name = "actionlib_msgs",
-    exports = [
-        "//external:jar/org/ros/rosjava_messages/actionlib_msgs"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
-
-java_library(
-    name = "geometry_msgs",
-    exports = [
-        "//external:jar/org/ros/rosjava_messages/geometry_msgs"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
-
-java_library(
-    name = "nav_msgs",
-    exports = [
-        "//external:jar/org/ros/rosjava_messages/nav_msgs"
-    ],
-    runtime_deps = [
-        "//3rdparty/jvm/org/ros/rosjava_bootstrap:message_generation",
-        ":actionlib_msgs",
-        ":geometry_msgs",
-        ":std_msgs"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
-
-java_library(
-    name = "rosgraph_msgs",
-    exports = [
-        "//external:jar/org/ros/rosjava_messages/rosgraph_msgs"
-    ],
-    runtime_deps = [
-        "//3rdparty/jvm/org/ros/rosjava_bootstrap:message_generation",
-        ":std_msgs"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
-
-java_library(
-    name = "rosjava_test_msgs",
-    exports = [
-        "//external:jar/org/ros/rosjava_messages/rosjava_test_msgs"
-    ],
-    runtime_deps = [
-        "//3rdparty/jvm/org/ros/rosjava_bootstrap:message_generation",
-        ":std_msgs"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
-
-java_library(
-    name = "std_msgs",
-    exports = [
-        "//external:jar/org/ros/rosjava_messages/std_msgs"
-    ],
-    runtime_deps = [
-        "//3rdparty/jvm/org/ros/rosjava_bootstrap:message_generation"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
diff --git a/3rdparty/jvm/xml_apis/BUILD b/3rdparty/jvm/xml_apis/BUILD
deleted file mode 100644
index 473c5ce2..00000000
--- a/3rdparty/jvm/xml_apis/BUILD
+++ /dev/null
@@ -1,12 +0,0 @@
-# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
-java_library(
-    name = "xml_apis",
-    exports = [
-        "//external:jar/xml_apis/xml_apis"
-    ],
-    visibility = [
-        "//visibility:public"
-    ]
-)
-
-
diff --git a/3rdparty/workspace.bzl b/3rdparty/workspace.bzl
deleted file mode 100644
index 15dcd3c4..00000000
--- a/3rdparty/workspace.bzl
+++ /dev/null
@@ -1,47 +0,0 @@
-# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
-
-def declare_maven(hash):
-    native.maven_jar(
-        name = hash["name"],
-        artifact = hash["artifact"],
-        sha1 = hash["sha1"],
-        repository = hash["repository"]
-    )
-    native.bind(
-        name = hash["bind"],
-        actual = hash["actual"]
-    )
-
-def list_dependencies():
-    return [
-    {"artifact": "com.google.code.findbugs:jsr305:1.3.9", "lang": "java", "sha1": "40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf", "repository": "https://jcenter.bintray.com/", "name": "com_google_code_findbugs_jsr305", "actual": "@com_google_code_findbugs_jsr305//jar", "bind": "jar/com/google/code/findbugs/jsr305"},
-    {"artifact": "com.google.guava:guava:12.0", "lang": "java", "sha1": "5bc66dd95b79db1e437eb08adba124a3e4088dc0", "repository": "https://jcenter.bintray.com/", "name": "com_google_guava_guava", "actual": "@com_google_guava_guava//jar", "bind": "jar/com/google/guava/guava"},
-    {"artifact": "commons-pool:commons-pool:1.6", "lang": "java", "sha1": "4572d589699f09d866a226a14b7f4323c6d8f040", "repository": "https://jcenter.bintray.com/", "name": "commons_pool_commons_pool", "actual": "@commons_pool_commons_pool//jar", "bind": "jar/commons_pool/commons_pool"},
-    {"artifact": "dnsjava:dnsjava:2.1.1", "lang": "java", "sha1": "5708df81cf6dbff545695f0be6380b7bbc85accc", "repository": "https://jcenter.bintray.com/", "name": "dnsjava_dnsjava", "actual": "@dnsjava_dnsjava//jar", "bind": "jar/dnsjava/dnsjava"},
-    {"artifact": "io.netty:netty:3.5.13.Final", "lang": "java", "sha1": "389edea561995909d5df3e70fb2c49954ac79a54", "repository": "https://jcenter.bintray.com/", "name": "io_netty_netty", "actual": "@io_netty_netty//jar", "bind": "jar/io/netty/netty"},
-# duplicates in junit:junit fixed to 4.8.2
-# - dnsjava:dnsjava:2.1.1 wanted version 3.8.2
-# - org.apache.ws.commons:ws-commons-util:1.0.1 wanted version 3.8.1
-    {"artifact": "junit:junit:4.8.2", "lang": "java", "sha1": "c94f54227b08100974c36170dcb53329435fe5ad", "repository": "https://jcenter.bintray.com/", "name": "junit_junit", "actual": "@junit_junit//jar", "bind": "jar/junit/junit"},
-    {"artifact": "org.apache.commons:com.springsource.org.apache.commons.codec:1.3.0", "lang": "java", "sha1": "a7c156ef67bdc69ae36a9c70adf7b8ca2633132c", "repository": "https://jcenter.bintray.com/", "name": "org_apache_commons_com_springsource_org_apache_commons_codec", "actual": "@org_apache_commons_com_springsource_org_apache_commons_codec//jar", "bind": "jar/org/apache/commons/com_springsource_org_apache_commons_codec"},
-    {"artifact": "org.apache.commons:com.springsource.org.apache.commons.httpclient:3.1.0", "lang": "java", "sha1": "c493a925a091ac3d8f449d9265fe12482dabb2a7", "repository": "https://jcenter.bintray.com/", "name": "org_apache_commons_com_springsource_org_apache_commons_httpclient", "actual": "@org_apache_commons_com_springsource_org_apache_commons_httpclient//jar", "bind": "jar/org/apache/commons/com_springsource_org_apache_commons_httpclient"},
-    {"artifact": "org.apache.commons:com.springsource.org.apache.commons.io:1.4.0", "lang": "java", "sha1": "51097cd000ec88214ff181c9f059947de1cf4a35", "repository": "https://jcenter.bintray.com/", "name": "org_apache_commons_com_springsource_org_apache_commons_io", "actual": "@org_apache_commons_com_springsource_org_apache_commons_io//jar", "bind": "jar/org/apache/commons/com_springsource_org_apache_commons_io"},
-    {"artifact": "org.apache.commons:com.springsource.org.apache.commons.lang:2.4.0", "lang": "java", "sha1": "686e3713650c8e3a5d98723b4d3e239586bf9822", "repository": "https://jcenter.bintray.com/", "name": "org_apache_commons_com_springsource_org_apache_commons_lang", "actual": "@org_apache_commons_com_springsource_org_apache_commons_lang//jar", "bind": "jar/org/apache/commons/com_springsource_org_apache_commons_lang"},
-    {"artifact": "org.apache.commons:com.springsource.org.apache.commons.logging:1.1.1", "lang": "java", "sha1": "7657caf2c78e1d79c74d36f2ae128a115f7cc180", "repository": "https://jcenter.bintray.com/", "name": "org_apache_commons_com_springsource_org_apache_commons_logging", "actual": "@org_apache_commons_com_springsource_org_apache_commons_logging//jar", "bind": "jar/org/apache/commons/com_springsource_org_apache_commons_logging"},
-    {"artifact": "org.apache.commons:com.springsource.org.apache.commons.net:2.0.0", "lang": "java", "sha1": "03e78766072ff5a5cf3f5431d973c430c94ec612", "repository": "https://jcenter.bintray.com/", "name": "org_apache_commons_com_springsource_org_apache_commons_net", "actual": "@org_apache_commons_com_springsource_org_apache_commons_net//jar", "bind": "jar/org/apache/commons/com_springsource_org_apache_commons_net"},
-    {"artifact": "org.apache.ws.commons:ws-commons-util:1.0.1", "lang": "java", "sha1": "126e80ff798fece634bc94e61f8be8a8da00be60", "repository": "https://jcenter.bintray.com/", "name": "org_apache_ws_commons_ws_commons_util", "actual": "@org_apache_ws_commons_ws_commons_util//jar", "bind": "jar/org/apache/ws/commons/ws_commons_util"},
-    {"artifact": "org.mockito:mockito-all:1.8.5", "lang": "java", "sha1": "a927d8ae3b8d22eb745a74f94e59ce3882f2b524", "repository": "https://jcenter.bintray.com/", "name": "org_mockito_mockito_all", "actual": "@org_mockito_mockito_all//jar", "bind": "jar/org/mockito/mockito_all"},
-    {"artifact": "org.ros.rosjava_bootstrap:gradle_plugins:0.3.0", "lang": "java", "sha1": "9915d897f3b5049e99b268068978a1bca0ae7b5d", "repository": "https://github.com/rosjava/rosjava_mvn_repo/raw/master", "name": "org_ros_rosjava_bootstrap_gradle_plugins", "actual": "@org_ros_rosjava_bootstrap_gradle_plugins//jar", "bind": "jar/org/ros/rosjava_bootstrap/gradle_plugins"},
-    {"artifact": "org.ros.rosjava_bootstrap:message_generation:0.3.0", "lang": "java", "sha1": "5141e448f0ea6a2d6f539219d4fc9b296ff07ca4", "repository": "https://github.com/rosjava/rosjava_mvn_repo/raw/master", "name": "org_ros_rosjava_bootstrap_message_generation", "actual": "@org_ros_rosjava_bootstrap_message_generation//jar", "bind": "jar/org/ros/rosjava_bootstrap/message_generation"},
-    {"artifact": "org.ros.rosjava_messages:actionlib_msgs:1.12.5", "lang": "java", "sha1": "aa70fb74bb8812b9f49cf95d4b44570ae8b951ee", "repository": "https://github.com/rosjava/rosjava_mvn_repo/raw/master", "name": "org_ros_rosjava_messages_actionlib_msgs", "actual": "@org_ros_rosjava_messages_actionlib_msgs//jar", "bind": "jar/org/ros/rosjava_messages/actionlib_msgs"},
-    {"artifact": "org.ros.rosjava_messages:geometry_msgs:1.12.5", "lang": "java", "sha1": "0cced5d3f1b4f55a4248884befce7e898856705d", "repository": "https://github.com/rosjava/rosjava_mvn_repo/raw/master", "name": "org_ros_rosjava_messages_geometry_msgs", "actual": "@org_ros_rosjava_messages_geometry_msgs//jar", "bind": "jar/org/ros/rosjava_messages/geometry_msgs"},
-    {"artifact": "org.ros.rosjava_messages:nav_msgs:1.12.5", "lang": "java", "sha1": "1af629301e0c1e2c5ae5dc5086127d0943f752fb", "repository": "https://github.com/rosjava/rosjava_mvn_repo/raw/master", "name": "org_ros_rosjava_messages_nav_msgs", "actual": "@org_ros_rosjava_messages_nav_msgs//jar", "bind": "jar/org/ros/rosjava_messages/nav_msgs"},
-    {"artifact": "org.ros.rosjava_messages:rosgraph_msgs:1.11.2", "lang": "java", "sha1": "adb731dd5181976b23c217872f61c724a3af70fe", "repository": "https://github.com/rosjava/rosjava_mvn_repo/raw/master", "name": "org_ros_rosjava_messages_rosgraph_msgs", "actual": "@org_ros_rosjava_messages_rosgraph_msgs//jar", "bind": "jar/org/ros/rosjava_messages/rosgraph_msgs"},
-    {"artifact": "org.ros.rosjava_messages:rosjava_test_msgs:0.3.0", "lang": "java", "sha1": "d81caa572200690bdeadf5c257f0d09d77623c1a", "repository": "https://github.com/rosjava/rosjava_mvn_repo/raw/master", "name": "org_ros_rosjava_messages_rosjava_test_msgs", "actual": "@org_ros_rosjava_messages_rosjava_test_msgs//jar", "bind": "jar/org/ros/rosjava_messages/rosjava_test_msgs"},
-    {"artifact": "org.ros.rosjava_messages:std_msgs:0.5.11", "lang": "java", "sha1": "a0191f0506dfecfc471eb199a119691717801c0e", "repository": "https://github.com/rosjava/rosjava_mvn_repo/raw/master", "name": "org_ros_rosjava_messages_std_msgs", "actual": "@org_ros_rosjava_messages_std_msgs//jar", "bind": "jar/org/ros/rosjava_messages/std_msgs"},
-    {"artifact": "xml-apis:xml-apis:1.0.b2", "lang": "java", "sha1": "3136ca936f64c9d68529f048c2618bd356bf85c9", "repository": "https://jcenter.bintray.com/", "name": "xml_apis_xml_apis", "actual": "@xml_apis_xml_apis//jar", "bind": "jar/xml_apis/xml_apis"},
-    ]
-
-def maven_dependencies(callback = declare_maven):
-    for hash in list_dependencies():
-        callback(hash)
diff --git a/CMakeLists.txt b/CMakeLists.txt
deleted file mode 100644
index 0be0c291..00000000
--- a/CMakeLists.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-##############################################################################
-# CMake
-##############################################################################
-
-cmake_minimum_required(VERSION 2.8.3)
-project(rosjava_core)
-
-##############################################################################
-# Catkin
-##############################################################################
-
-find_package(catkin REQUIRED 
-    rosjava_build_tools
-    geometry_msgs
-    nav_msgs
-    rosjava_test_msgs
-    rosgraph_msgs
-    sensor_msgs
-    tf2_msgs
-)
-
-catkin_rosjava_setup(publish installDist)
-
-# make sure messages get built first if genjava is enabled
-add_dependencies(gradle-${PROJECT_NAME} ${catkin_EXPORTED_TARGETS})
-
-catkin_package()
-
-##############################################################################
-# Installation
-##############################################################################
-
-install(DIRECTORY ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_MAVEN_DESTINATION}/org/ros/rosjava_core/ 
-        DESTINATION ${CATKIN_GLOBAL_MAVEN_DESTINATION}/org/ros/rosjava_core)
diff --git a/WORKSPACE b/WORKSPACE
deleted file mode 100644
index d946ad27..00000000
--- a/WORKSPACE
+++ /dev/null
@@ -1,9 +0,0 @@
-workspace(name = "com_github_rosjava_rosjava_core")
-
-load("//3rdparty:workspace.bzl", "maven_dependencies")
-
-maven_dependencies()
-
-load("//bazel:repositories.bzl", "rosjava_repositories")
-
-rosjava_repositories()
diff --git a/bazel/BUILD.bazel b/bazel/BUILD.bazel
deleted file mode 100644
index e69de29b..00000000
diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl
deleted file mode 100644
index 4a28354e..00000000
--- a/bazel/repositories.bzl
+++ /dev/null
@@ -1,30 +0,0 @@
-"""External dependencies for rosjava_core, excluding Maven dependencies.
-
-Maven dependencies must be added to the workspace with bazel-deps.
-"""
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-def rosjava_repositories():
-  _maybe(http_archive,
-      name = "com_googlesource_gerrit_bazlets",
-      sha256 = "cdd1a90733cdb71ac4fb86aa6027d3fcad275fe74781175f8437a9c86a0db149",
-      strip_prefix = "bazlets-4459b9706a6eedb8453a98d4434fb3bc4db84211",
-      urls = [
-          "https://github.com/GerritCodeReview/bazlets/archive/4459b9706a6eedb8453a98d4434fb3bc4db84211.tar.gz",
-      ],
-  )
-
-  _maybe(http_archive,
-      name = "com_github_rosjava_rosjava_bootstrap",
-      sha256 = "3c59776a8c6e22232d07f29a686c0e5f401812ec27f59405711657d54a792c08",
-      strip_prefix = "rosjava_bootstrap-62f865dbe8a7830b21e054dc2a5ac7d2edc6eafe",
-      urls = [
-          "https://github.com/rosjava/rosjava_bootstrap/archive/62f865dbe8a7830b21e054dc2a5ac7d2edc6eafe.tar.gz",
-      ],
-  )
-
-
-def _maybe(repo_rule, name, **kwargs):
-  if name not in native.existing_rules():
-    repo_rule(name=name, **kwargs)
diff --git a/build.gradle b/build.gradle
index 4f62fac0..b2fb55ae 100644
--- a/build.gradle
+++ b/build.gradle
@@ -19,7 +19,7 @@ task wrapper(type: Wrapper) {
 }
 
 buildscript {
-  apply from: "https://github.com/rosjava/rosjava_bootstrap/raw/kinetic/buildscript.gradle"
+  apply from: "buildscript.gradle"
 }
 
 apply plugin: "catkin"
diff --git a/buildscript.gradle b/buildscript.gradle
new file mode 100644
index 00000000..21adffaa
--- /dev/null
+++ b/buildscript.gradle
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2014 Google Inc.
+ *
+ * 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.
+ */
+
+rootProject.buildscript {
+    String rosMavenPath = System.getenv("ROS_MAVEN_PATH")
+    String rosMavenRepository = System.getenv("ROS_MAVEN_REPOSITORY")
+    repositories {
+        if (rosMavenPath != null) {
+            rosMavenPath.tokenize(":").each { path ->
+                maven {
+                    // We can't use uri() here because we aren't running inside something
+                    // that implements the Script interface.
+                    url "file:${path}"
+                }
+            }
+        }
+        maven {
+            url "http://repository.springsource.com/maven/bundles/release"
+        }
+        maven {
+            url "http://repository.springsource.com/maven/bundles/external"
+        }
+        if (rosMavenRepository != null) {
+            maven {
+                url rosMavenRepository
+            }
+        }
+        maven {
+            url "https://github.com/rosjava/rosjava_mvn_repo/raw/master"
+        }
+        google()
+        jcenter()
+    }
+    dependencies {
+        classpath "org.ros.rosjava_bootstrap:gradle_plugins:[0.3,0.4)"
+    }
+}
diff --git a/dependencies.yaml b/dependencies.yaml
deleted file mode 100644
index 9320f2b1..00000000
--- a/dependencies.yaml
+++ /dev/null
@@ -1,86 +0,0 @@
-# If you edit this file, follow these instructions to generate the output
-# files:
-#
-# cd ..
-# git clone https://github.com/johnynek/bazel-deps
-# cd bazel-deps
-# bazel build src/scala/com/github/johnynek/bazel_deps:parseproject_deploy.jar
-# cd ../rosjava_core
-# ../bazel-deps/gen_maven_deps.sh generate -r $PWD -s 3rdparty/workspace.bzl -d dependencies.yaml
-
-options:
-  languages: [ "java" ]
-  resolvers:
-    - id: "jcenter"
-      type: "default"
-      url: https://jcenter.bintray.com/
-    - id: "rosjava_mvn_repo"
-      type: "default"
-      url: https://github.com/rosjava/rosjava_mvn_repo/raw/master
-  resolverCache: bazel_output_base
-  transitivity: runtime_deps
-  versionConflictPolicy: highest
-  buildHeader:
-    - "# Do not edit. bazel-deps autogenerates this file from dependencies.yaml."
-
-dependencies:
-  commons-pool:
-    commons-pool:
-      lang: java
-      version: "1.6"
-  com.google.guava:
-    guava:
-      lang: java
-      version: "12.0"
-  dnsjava:
-    dnsjava:
-      lang: java
-      version: "2.1.1"
-  io.netty:
-    netty:
-      lang: java
-      version: "3.5.13.Final"
-  junit:
-    junit:
-      lang: java
-      version: "4.8.2"
-  org.apache.commons:
-    com.springsource.org.apache.commons.codec:
-      lang: java
-      version: "1.3.0"
-    com.springsource.org.apache.commons.httpclient:
-      lang: java
-      version: "3.1.0"
-    com.springsource.org.apache.commons.io:
-      lang: java
-      version: "1.4.0"
-    com.springsource.org.apache.commons.lang:
-      lang: java
-      version: "2.4.0"
-    com.springsource.org.apache.commons.logging:
-      lang: java
-      version: "1.1.1"
-    com.springsource.org.apache.commons.net:
-      lang: java
-      version: "2.0.0"
-  org.apache.ws.commons:
-    ws-commons-util:
-      lang: java
-      version: "1.0.1"
-  org.mockito:
-    mockito-all:
-      lang: java
-      version: "1.8.5"
-  org.ros.rosjava_messages:
-    nav_msgs:
-      lang: java
-      version: "1.12.5"
-    rosgraph_msgs:
-      lang: java
-      version: "1.11.2"
-    rosjava_test_msgs:
-      lang: java
-      version: "0.3.0"
-    std_msgs:
-      lang: java
-      version: "0.5.11"
diff --git a/misc/rosjava_formatter.xml b/misc/rosjava_formatter.xml
deleted file mode 100644
index 1afde53f..00000000
--- a/misc/rosjava_formatter.xml
+++ /dev/null
@@ -1,279 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<profiles version="11">
-<profile kind="CodeFormatterProfile" name="rosjava" version="11">
-<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
-<setting id="org.eclipse.jdt.core.compiler.source" value="1.5"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="100"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="16"/>
-<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
-<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="2"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
-<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.5"/>
-<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
-<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.5"/>
-<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
-</profile>
-</profiles>
diff --git a/misc/rosjava_import_order.importorder b/misc/rosjava_import_order.importorder
deleted file mode 100644
index 1655a214..00000000
--- a/misc/rosjava_import_order.importorder
+++ /dev/null
@@ -1,6 +0,0 @@
-#Organize Import Order
-#Wed Feb 23 23:44:47 PST 2011
-3=javax
-2=java
-1=
-0=com.google
diff --git a/misc/rospack_nosubdirs b/misc/rospack_nosubdirs
deleted file mode 100644
index e69de29b..00000000
diff --git a/rosjava/build.gradle b/rosjava/build.gradle
index 33867f8a..31face18 100644
--- a/rosjava/build.gradle
+++ b/rosjava/build.gradle
@@ -19,17 +19,12 @@ dependencies {
   compile project(':apache_xmlrpc_server')
   compile project(':apache_xmlrpc_client')
   compile 'org.ros.rosjava_bootstrap:message_generation:[0.3,0.4)'
-  compile 'org.ros.rosjava_messages:rosjava_test_msgs:[0.3,0.4)'
   compile 'org.ros.rosjava_messages:rosgraph_msgs:[1.11,1.12)'
-  compile 'org.ros.rosjava_messages:geometry_msgs:[1.12,1.13)'
-  compile 'org.ros.rosjava_messages:nav_msgs:[1.12,1.13)'
   compile 'org.ros.rosjava_messages:tf2_msgs:[0.5,0.6)'
   compile 'dnsjava:dnsjava:2.1.1'
   compile 'org.apache.commons:com.springsource.org.apache.commons.logging:1.1.1'
   compile 'org.apache.commons:com.springsource.org.apache.commons.net:2.0.0'
   compile 'com.google.guava:guava:12.0'
-  testCompile 'junit:junit:4.8.2'
-  testCompile 'org.mockito:mockito-all:1.8.5'
 }
 
 jar {
diff --git a/rosjava_benchmarks/build.gradle b/rosjava_benchmarks/build.gradle
deleted file mode 100644
index 8853d321..00000000
--- a/rosjava_benchmarks/build.gradle
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-
-apply plugin: 'application'
-
-mainClassName = 'org.ros.RosRun'
-
-dependencies {
-  compile project(':rosjava')
-  compile project(':rosjava_geometry')
-}
diff --git a/rosjava_benchmarks/scripts/pubsub_benchmark.py b/rosjava_benchmarks/scripts/pubsub_benchmark.py
deleted file mode 100755
index b669f771..00000000
--- a/rosjava_benchmarks/scripts/pubsub_benchmark.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2012 Google Inc.
-#
-# 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.
-
-import threading
-
-import roslib; roslib.load_manifest('rosjava_benchmarks')
-import rospy
-
-import tf.msg as tf_msgs
-import std_msgs.msg as std_msgs
-
-
-class PubsubBenchmark(object):
-
-  def __init__(self):
-    self.count = itertools.count()
-    self.time = rospy.Time.now()
-    self.lock = threading.Lock()
-
-  def callback(self, _):
-    with self.lock:
-      self.count.next()
-
-  def run(self):
-    tf_publisher = rospy.Publisher('tf', tf_msgs.tfMessage)
-    status_publisher = rospy.Publisher('status', std_msgs.String)
-    rospy.Subscriber('tf', tf_msgs.tfMessage, self.callback)
-    while not rospy.is_shutdown():
-      tf_publisher.publish(tf_msgs.tfMessage())
-      if (rospy.Time.now() - self.time) > rospy.Duration(5):
-        status_publisher.publish(std_msgs.String('%.2f Hz' % (self.count.next() / 5.0)))
-        with self.lock:
-          self.count = itertools.count()
-          self.time = rospy.Time.now()
-
-
-if __name__ == '__main__':
-  try:
-    rospy.init_node('benchmark')
-    PubsubBenchmark().run()
-  except rospy.ROSInterruptException:
-    pass
diff --git a/rosjava_benchmarks/src/main/java/org/ros/rosjava_benchmarks/MessagesBenchmark.java b/rosjava_benchmarks/src/main/java/org/ros/rosjava_benchmarks/MessagesBenchmark.java
deleted file mode 100644
index 4ab11ac8..00000000
--- a/rosjava_benchmarks/src/main/java/org/ros/rosjava_benchmarks/MessagesBenchmark.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- *
- * 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.
- */
-
-package org.ros.rosjava_benchmarks;
-
-import org.ros.concurrent.CancellableLoop;
-import org.ros.concurrent.Rate;
-import org.ros.concurrent.WallTimeRate;
-import org.ros.message.Duration;
-import org.ros.message.Time;
-import org.ros.namespace.GraphName;
-import org.ros.node.AbstractNodeMain;
-import org.ros.node.ConnectedNode;
-import org.ros.node.topic.Publisher;
-
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessagesBenchmark extends AbstractNodeMain {
-
-  private final AtomicInteger counter;
-
-  private Time time;
-
-  public MessagesBenchmark() {
-    counter = new AtomicInteger();
-  }
-
-  @Override
-  public GraphName getDefaultNodeName() {
-    return GraphName.of("messages_benchmark");
-  }
-
-  @Override
-  public void onStart(final ConnectedNode connectedNode) {
-    connectedNode.executeCancellableLoop(new CancellableLoop() {
-      @Override
-      protected void loop() throws InterruptedException {
-        geometry_msgs.TransformStamped message =
-            connectedNode.getTopicMessageFactory()
-                .newFromType(geometry_msgs.TransformStamped._TYPE);
-        message.getHeader().setFrameId("world");
-        message.setChildFrameId("turtle");
-        message.getHeader().setStamp(connectedNode.getCurrentTime());
-        message.getTransform().getRotation().setW(Math.random());
-        message.getTransform().getRotation().setX(Math.random());
-        message.getTransform().getRotation().setY(Math.random());
-        message.getTransform().getRotation().setZ(Math.random());
-        message.getTransform().getTranslation().setX(Math.random());
-        message.getTransform().getTranslation().setY(Math.random());
-        message.getTransform().getTranslation().setZ(Math.random());
-        counter.incrementAndGet();
-      }
-    });
-
-    time = connectedNode.getCurrentTime();
-    final Publisher<std_msgs.String> statusPublisher =
-        connectedNode.newPublisher("status", std_msgs.String._TYPE);
-    final Rate rate = new WallTimeRate(1);
-    final std_msgs.String status = statusPublisher.newMessage();
-    connectedNode.executeCancellableLoop(new CancellableLoop() {
-      @Override
-      protected void loop() throws InterruptedException {
-        Time now = connectedNode.getCurrentTime();
-        Duration delta = now.subtract(time);
-        if (delta.totalNsecs() > TimeUnit.NANOSECONDS.convert(5, TimeUnit.SECONDS)) {
-          double hz = counter.getAndSet(0) * 1e9 / delta.totalNsecs();
-          status.setData(String.format("%.2f Hz", hz));
-          statusPublisher.publish(status);
-          time = now;
-        }
-        rate.sleep();
-      }
-    });
-  }
-}
diff --git a/rosjava_benchmarks/src/main/java/org/ros/rosjava_benchmarks/PubsubBenchmark.java b/rosjava_benchmarks/src/main/java/org/ros/rosjava_benchmarks/PubsubBenchmark.java
deleted file mode 100644
index 4b43ae0c..00000000
--- a/rosjava_benchmarks/src/main/java/org/ros/rosjava_benchmarks/PubsubBenchmark.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- *
- * 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.
- */
-
-package org.ros.rosjava_benchmarks;
-
-import org.ros.concurrent.CancellableLoop;
-import org.ros.concurrent.Rate;
-import org.ros.concurrent.WallTimeRate;
-import org.ros.message.Duration;
-import org.ros.message.MessageListener;
-import org.ros.message.Time;
-import org.ros.namespace.GraphName;
-import org.ros.node.AbstractNodeMain;
-import org.ros.node.ConnectedNode;
-import org.ros.node.topic.Publisher;
-import org.ros.node.topic.Subscriber;
-import tf2_msgs.TFMessage;
-
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class PubsubBenchmark extends AbstractNodeMain {
-
-  private final AtomicInteger counter;
-
-  private Publisher<std_msgs.String> statusPublisher;
-  private Publisher<tf2_msgs.TFMessage> tfPublisher;
-  private Subscriber<tf2_msgs.TFMessage> tfSubscriber;
-  private Time time;
-
-  public PubsubBenchmark() {
-    counter = new AtomicInteger();
-  }
-
-  @Override
-  public GraphName getDefaultNodeName() {
-    return GraphName.of("pubsub_benchmark");
-  }
-
-  @Override
-  public void onStart(final ConnectedNode connectedNode) {
-    tfSubscriber = connectedNode.newSubscriber("tf", tf2_msgs.TFMessage._TYPE);
-    tfSubscriber.addMessageListener(new MessageListener<tf2_msgs.TFMessage>() {
-      @Override
-      public void onNewMessage(tf2_msgs.TFMessage message) {
-        counter.incrementAndGet();
-      }
-    });
-
-    tfPublisher = connectedNode.newPublisher("tf", tf2_msgs.TFMessage._TYPE);
-    final tf2_msgs.TFMessage tfMessage = tfPublisher.newMessage();
-    geometry_msgs.TransformStamped transformStamped =
-        connectedNode.getTopicMessageFactory().newFromType(geometry_msgs.TransformStamped._TYPE);
-    tfMessage.getTransforms().add(transformStamped);
-    connectedNode.executeCancellableLoop(new CancellableLoop() {
-      @Override
-      protected void loop() throws InterruptedException {
-        tfPublisher.publish(tfMessage);
-      }
-    });
-
-    time = connectedNode.getCurrentTime();
-    statusPublisher = connectedNode.newPublisher("status", std_msgs.String._TYPE);
-    final Rate rate = new WallTimeRate(1);
-    final std_msgs.String status = statusPublisher.newMessage();
-    connectedNode.executeCancellableLoop(new CancellableLoop() {
-      @Override
-      protected void loop() throws InterruptedException {
-        Time now = connectedNode.getCurrentTime();
-        Duration delta = now.subtract(time);
-        if (delta.totalNsecs() > TimeUnit.NANOSECONDS.convert(5, TimeUnit.SECONDS)) {
-          double hz = counter.getAndSet(0) * 1e9 / delta.totalNsecs();
-          status.setData(String.format("%.2f Hz", hz));
-          statusPublisher.publish(status);
-          time = now;
-        }
-        rate.sleep();
-      }
-    });
-  }
-}
diff --git a/rosjava_benchmarks/src/main/java/org/ros/rosjava_benchmarks/TransformBenchmark.java b/rosjava_benchmarks/src/main/java/org/ros/rosjava_benchmarks/TransformBenchmark.java
deleted file mode 100644
index 300b70d1..00000000
--- a/rosjava_benchmarks/src/main/java/org/ros/rosjava_benchmarks/TransformBenchmark.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- *
- * 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.
- */
-
-package org.ros.rosjava_benchmarks;
-
-import org.ros.concurrent.CancellableLoop;
-import org.ros.concurrent.Rate;
-import org.ros.concurrent.WallTimeRate;
-import org.ros.message.Duration;
-import org.ros.message.Time;
-import org.ros.namespace.GraphName;
-import org.ros.node.AbstractNodeMain;
-import org.ros.node.ConnectedNode;
-import org.ros.node.topic.Publisher;
-import org.ros.rosjava_geometry.FrameTransformTree;
-
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class TransformBenchmark extends AbstractNodeMain {
-
-  private final AtomicInteger counter;
-
-  private Time time;
-
-  public TransformBenchmark() {
-    counter = new AtomicInteger();
-  }
-
-  @Override
-  public GraphName getDefaultNodeName() {
-    return GraphName.of("transform_benchmark");
-  }
-
-  @Override
-  public void onStart(final ConnectedNode connectedNode) {
-    final geometry_msgs.TransformStamped turtle1 =
-        connectedNode.getTopicMessageFactory().newFromType(geometry_msgs.TransformStamped._TYPE);
-    turtle1.getHeader().setFrameId("world");
-    turtle1.setChildFrameId("turtle1");
-    final geometry_msgs.TransformStamped turtle2 =
-        connectedNode.getTopicMessageFactory().newFromType(geometry_msgs.TransformStamped._TYPE);
-    turtle2.getHeader().setFrameId("world");
-    turtle2.setChildFrameId("turtle2");
-    final FrameTransformTree frameTransformTree = new FrameTransformTree();
-    connectedNode.executeCancellableLoop(new CancellableLoop() {
-      @Override
-      protected void loop() throws InterruptedException {
-        updateTransform(turtle1, connectedNode, frameTransformTree);
-        updateTransform(turtle2, connectedNode, frameTransformTree);
-        frameTransformTree.transform("turtle1", "turtle2");
-        counter.incrementAndGet();
-      }
-    });
-
-    time = connectedNode.getCurrentTime();
-    final Publisher<std_msgs.String> statusPublisher =
-        connectedNode.newPublisher("status", std_msgs.String._TYPE);
-    final Rate rate = new WallTimeRate(1);
-    final std_msgs.String status = statusPublisher.newMessage();
-    connectedNode.executeCancellableLoop(new CancellableLoop() {
-      @Override
-      protected void loop() throws InterruptedException {
-        Time now = connectedNode.getCurrentTime();
-        Duration delta = now.subtract(time);
-        if (delta.totalNsecs() > TimeUnit.NANOSECONDS.convert(5, TimeUnit.SECONDS)) {
-          double hz = counter.getAndSet(0) * 1e9 / delta.totalNsecs();
-          status.setData(String.format("%.2f Hz", hz));
-          statusPublisher.publish(status);
-          time = now;
-        }
-        rate.sleep();
-      }
-    });
-  }
-
-  private void updateTransform(geometry_msgs.TransformStamped transformStamped,
-      ConnectedNode connectedNode, FrameTransformTree frameTransformTree) {
-    transformStamped.getHeader().setStamp(connectedNode.getCurrentTime());
-    transformStamped.getTransform().getRotation().setW(Math.random());
-    transformStamped.getTransform().getRotation().setX(Math.random());
-    transformStamped.getTransform().getRotation().setY(Math.random());
-    transformStamped.getTransform().getRotation().setZ(Math.random());
-    transformStamped.getTransform().getTranslation().setX(Math.random());
-    transformStamped.getTransform().getTranslation().setY(Math.random());
-    transformStamped.getTransform().getTranslation().setZ(Math.random());
-    frameTransformTree.update(transformStamped);
-  }
-}
diff --git a/rosjava_geometry/build.gradle b/rosjava_geometry/build.gradle
deleted file mode 100644
index e02ee7c6..00000000
--- a/rosjava_geometry/build.gradle
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-
-dependencies {
-  compile project(':rosjava')
-  testCompile 'junit:junit:4.8.2'
-}
diff --git a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/FrameTransform.java b/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/FrameTransform.java
deleted file mode 100644
index c484d0a8..00000000
--- a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/FrameTransform.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- *
- * 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.
- */
-
-package org.ros.rosjava_geometry;
-
-import org.ros.message.Time;
-import org.ros.namespace.GraphName;
-
-import com.google.common.base.Preconditions;
-
-/**
- * Describes a {@link Transform} from data in the source frame to data in the
- * target frame at a specified {@link Time}.
- *
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class FrameTransform {
-
-  private final Transform transform;
-  private final GraphName source;
-  private final GraphName target;
-  private final Time time;
-
-  public static FrameTransform fromTransformStampedMessage(
-      geometry_msgs.TransformStamped transformStamped) {
-    Transform transform = Transform.fromTransformMessage(transformStamped.getTransform());
-    String target = transformStamped.getHeader().getFrameId();
-    String source = transformStamped.getChildFrameId();
-    Time stamp = transformStamped.getHeader().getStamp();
-    return new FrameTransform(transform, GraphName.of(source), GraphName.of(target), stamp);
-  }
-
-  /**
-   * Allocates a new {@link FrameTransform}.
-   *
-   * @param transform
-   *          the {@link Transform} that transforms data in the {@code source}
-   *          frame to data in the {@code target} frame
-   * @param source
-   *          the source frame
-   * @param target
-   *          the target frame
-   * @param time
-   *          the time associated with this {@link FrameTransform}, can be
-   *          {@null}
-   */
-  public FrameTransform(Transform transform, GraphName source, GraphName target, Time time) {
-    Preconditions.checkNotNull(transform);
-    Preconditions.checkNotNull(source);
-    Preconditions.checkNotNull(target);
-    this.transform = transform;
-    this.source = source.toRelative();
-    this.target = target.toRelative();
-    this.time = time;
-  }
-
-  public Transform getTransform() {
-    return transform;
-  }
-
-  public GraphName getSourceFrame() {
-    return source;
-  }
-
-  public GraphName getTargetFrame() {
-    return target;
-  }
-
-  public FrameTransform invert() {
-    return new FrameTransform(transform.invert(), target, source, time);
-  }
-
-  /**
-   * @return the time associated with the {@link FrameTransform} or {@code null}
-   *         if there is no associated time
-   */
-  public Time getTime() {
-    return time;
-  }
-
-  public geometry_msgs.TransformStamped toTransformStampedMessage(
-      geometry_msgs.TransformStamped result) {
-    Preconditions.checkNotNull(time);
-    result.getHeader().setFrameId(target.toString());
-    result.getHeader().setStamp(time);
-    result.setChildFrameId(source.toString());
-    transform.toTransformMessage(result.getTransform());
-    return result;
-  }
-
-  @Override
-  public String toString() {
-    return String.format("FrameTransform<Source: %s, Target: %s, %s, Time: %s>", source, target,
-        transform, time);
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = 1;
-    result = prime * result + ((source == null) ? 0 : source.hashCode());
-    result = prime * result + ((target == null) ? 0 : target.hashCode());
-    result = prime * result + ((time == null) ? 0 : time.hashCode());
-    result = prime * result + ((transform == null) ? 0 : transform.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (obj == null)
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    FrameTransform other = (FrameTransform) obj;
-    if (source == null) {
-      if (other.source != null)
-        return false;
-    } else if (!source.equals(other.source))
-      return false;
-    if (target == null) {
-      if (other.target != null)
-        return false;
-    } else if (!target.equals(other.target))
-      return false;
-    if (time == null) {
-      if (other.time != null)
-        return false;
-    } else if (!time.equals(other.time))
-      return false;
-    if (transform == null) {
-      if (other.transform != null)
-        return false;
-    } else if (!transform.equals(other.transform))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/FrameTransformTree.java b/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/FrameTransformTree.java
deleted file mode 100644
index 2bc3dda2..00000000
--- a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/FrameTransformTree.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-
-package org.ros.rosjava_geometry;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Maps;
-
-import geometry_msgs.TransformStamped;
-import org.ros.concurrent.CircularBlockingDeque;
-import org.ros.message.Time;
-import org.ros.namespace.GraphName;
-
-import java.util.Map;
-
-/**
- * A tree of {@link FrameTransform}s.
- * <p>
- * {@link FrameTransformTree} does not currently support time travel. Lookups
- * always use the newest {@link TransformStamped}.
- *
- * @author damonkohler@google.com (Damon Kohler)
- * @author moesenle@google.com (Lorenz Moesenlechner)
- */
-public class FrameTransformTree {
-
-  private static final int TRANSFORM_QUEUE_CAPACITY = 16;
-
-  private final Object mutex;
-
-  /**
-   * A {@link Map} of the most recent {@link LazyFrameTransform} by source
-   * frame. Lookups by target frame or by the pair of source and target are both
-   * unnecessary because every frame can only have exactly one target.
-   */
-  private final Map<GraphName, CircularBlockingDeque<LazyFrameTransform>> transforms;
-
-  public FrameTransformTree() {
-    mutex = new Object();
-    transforms = Maps.newConcurrentMap();
-  }
-
-  /**
-   * Updates the tree with the provided {@link geometry_msgs.TransformStamped}
-   * message.
-   * <p>
-   * Note that the tree is updated lazily. Modifications to the provided
-   * {@link geometry_msgs.TransformStamped} message may cause unpredictable
-   * results.
-   *
-   * @param transformStamped
-   *          the {@link geometry_msgs.TransformStamped} message to update with
-   */
-  public void update(geometry_msgs.TransformStamped transformStamped) {
-    Preconditions.checkNotNull(transformStamped);
-    GraphName source = GraphName.of(transformStamped.getChildFrameId());
-    LazyFrameTransform lazyFrameTransform = new LazyFrameTransform(transformStamped);
-    add(source, lazyFrameTransform);
-  }
-
-  @VisibleForTesting
-  void update(FrameTransform frameTransform) {
-    Preconditions.checkNotNull(frameTransform);
-    GraphName source = frameTransform.getSourceFrame();
-    LazyFrameTransform lazyFrameTransform = new LazyFrameTransform(frameTransform);
-    add(source, lazyFrameTransform);
-  }
-
-  private void add(GraphName source, LazyFrameTransform lazyFrameTransform) {
-    // This adds support for tf2 while maintaining backward compatibility with tf.
-    GraphName relativeSource = source.toRelative();
-    if (!transforms.containsKey(relativeSource)) {
-      transforms.put(relativeSource, new CircularBlockingDeque<LazyFrameTransform>(
-          TRANSFORM_QUEUE_CAPACITY));
-    }
-    synchronized (mutex) {
-      transforms.get(relativeSource).addFirst(lazyFrameTransform);
-    }
-  }
-
-  /**
-   * Returns the most recent {@link FrameTransform} for target {@code source}.
-   *
-   * @param source
-   *          the frame to look up
-   * @return the most recent {@link FrameTransform} for {@code source} or
-   *         {@code null} if no transform for {@code source} is available
-   */
-  public FrameTransform lookUp(GraphName source) {
-    Preconditions.checkNotNull(source);
-    // This adds support for tf2 while maintaining backward compatibility with tf.
-    return getLatest(source.toRelative());
-  }
-
-  private FrameTransform getLatest(GraphName source) {
-    CircularBlockingDeque<LazyFrameTransform> deque = transforms.get(source);
-    if (deque == null) {
-      return null;
-    }
-    LazyFrameTransform lazyFrameTransform = deque.peekFirst();
-    if (lazyFrameTransform == null) {
-      return null;
-    }
-    return lazyFrameTransform.get();
-  }
-
-  /**
-   * @see #lookUp(GraphName)
-   */
-  public FrameTransform get(String source) {
-    Preconditions.checkNotNull(source);
-    return lookUp(GraphName.of(source));
-  }
-
-  /**
-   * Returns the {@link FrameTransform} for {@code source} closest to
-   * {@code time}.
-   *
-   * @param source
-   *          the frame to look up
-   * @param time
-   *          the transform for {@code frame} closest to this {@link Time} will
-   *          be returned
-   * @return the most recent {@link FrameTransform} for {@code source} or
-   *         {@code null} if no transform for {@code source} is available
-   */
-  public FrameTransform lookUp(GraphName source, Time time) {
-    Preconditions.checkNotNull(source);
-    Preconditions.checkNotNull(time);
-    return get(source, time);
-  }
-
-  // TODO(damonkohler): Use an efficient search.
-  private FrameTransform get(GraphName source, Time time) {
-    CircularBlockingDeque<LazyFrameTransform> deque = transforms.get(source);
-    if (deque == null) {
-      return null;
-    }
-    LazyFrameTransform result = null;
-    synchronized (mutex) {
-      long offset = 0;
-      for (LazyFrameTransform lazyFrameTransform : deque) {
-        if (result == null) {
-          result = lazyFrameTransform;
-          offset = Math.abs(time.subtract(result.get().getTime()).totalNsecs());
-          continue;
-        }
-        long newOffset = Math.abs(time.subtract(lazyFrameTransform.get().getTime()).totalNsecs());
-        if (newOffset < offset) {
-          result = lazyFrameTransform;
-          offset = newOffset;
-        }
-      }
-    }
-    if (result == null) {
-      return null;
-    }
-    return result.get();
-  }
-
-  /**
-   * @see #lookUp(GraphName, Time)
-   */
-  public FrameTransform get(String source, Time time) {
-    Preconditions.checkNotNull(source);
-    return lookUp(GraphName.of(source), time);
-  }
-
-  /**
-   * @return the {@link FrameTransform} from source the frame to the target
-   *         frame, or {@code null} if no {@link FrameTransform} could be found
-   */
-  public FrameTransform transform(GraphName source, GraphName target) {
-    Preconditions.checkNotNull(source);
-    Preconditions.checkNotNull(target);
-    // This adds support for tf2 while maintaining backward compatibility with tf.
-    GraphName relativeSource = source.toRelative();
-    GraphName relativeTarget = target.toRelative();
-    if (relativeSource.equals(relativeTarget)) {
-      return new FrameTransform(Transform.identity(), relativeSource, relativeTarget, null);
-    }
-    FrameTransform sourceToRoot = transformToRoot(relativeSource);
-    FrameTransform targetToRoot = transformToRoot(relativeTarget);
-    if (sourceToRoot == null && targetToRoot == null) {
-      return null;
-    }
-    if (sourceToRoot == null) {
-      if (targetToRoot.getTargetFrame().equals(relativeSource)) {
-        // relativeSource is root.
-        return targetToRoot.invert();
-      } else {
-        return null;
-      }
-    }
-    if (targetToRoot == null) {
-      if (sourceToRoot.getTargetFrame().equals(relativeTarget)) {
-        // relativeTarget is root.
-        return sourceToRoot;
-      } else {
-        return null;
-      }
-    }
-    if (sourceToRoot.getTargetFrame().equals(targetToRoot.getTargetFrame())) {
-      // Neither relativeSource nor relativeTarget is root and both share the
-      // same root.
-      Transform transform =
-          targetToRoot.getTransform().invert().multiply(sourceToRoot.getTransform());
-      return new FrameTransform(transform, relativeSource, relativeTarget, sourceToRoot.getTime());
-    }
-    // No known transform.
-    return null;
-  }
-
-  /**
-   * @see #transform(GraphName, GraphName)
-   */
-  public FrameTransform transform(String source, String target) {
-    Preconditions.checkNotNull(source);
-    Preconditions.checkNotNull(target);
-    return transform(GraphName.of(source), GraphName.of(target));
-  }
-
-  /**
-   * @param source
-   *          the source frame
-   * @return the {@link Transform} from {@code source} to root
-   */
-  @VisibleForTesting
-  FrameTransform transformToRoot(GraphName source) {
-    FrameTransform result = getLatest(source);
-    if (result == null) {
-      return null;
-    }
-    while (true) {
-      FrameTransform resultToParent = lookUp(result.getTargetFrame(), result.getTime());
-      if (resultToParent == null) {
-        return result;
-      }
-      // Now resultToParent.getSourceFrame() == result.getTargetFrame()
-      Transform transform = resultToParent.getTransform().multiply(result.getTransform());
-      GraphName target = resultToParent.getTargetFrame();
-      result = new FrameTransform(transform, source, target, result.getTime());
-    }
-  }
-}
diff --git a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/LazyFrameTransform.java b/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/LazyFrameTransform.java
deleted file mode 100644
index acf378e0..00000000
--- a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/LazyFrameTransform.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- * 
- * 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.
- */
-
-package org.ros.rosjava_geometry;
-
-import com.google.common.annotations.VisibleForTesting;
-
-/**
- * Lazily converts a {@link geometry_msgs.Transform} message to a
- * {@link Transform} on the first call to {@link #get()} and caches the result.
- * <p>
- * This class is thread-safe.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class LazyFrameTransform {
-
-  private final geometry_msgs.TransformStamped message;
-
-  // Avoiding constructor code duplication.
-  private final Object mutex = new Object();
-
-  private FrameTransform frameTransform;
-
-  public LazyFrameTransform(geometry_msgs.TransformStamped message) {
-    this.message = message;
-  }
-
-  @VisibleForTesting
-  LazyFrameTransform(FrameTransform frameTransform) {
-    message = null;
-    this.frameTransform = frameTransform;
-  }
-
-  /**
-   * @return the {@link FrameTransform} for the wrapped
-   *         {@link geometry_msgs.TransformStamped} message
-   */
-  public FrameTransform get() {
-    synchronized (mutex) {
-      if (frameTransform != null) {
-        return frameTransform;
-      }
-      frameTransform = FrameTransform.fromTransformStampedMessage(message);
-    }
-    return frameTransform;
-  }
-}
\ No newline at end of file
diff --git a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/Quaternion.java b/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/Quaternion.java
deleted file mode 100644
index b4c7e72e..00000000
--- a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/Quaternion.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-
-package org.ros.rosjava_geometry;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-/**
- * A quaternion.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- * @author moesenle@google.com (Lorenz Moesenlechner)
- */
-public class Quaternion {
-
-  private final double x;
-  private final double y;
-  private final double z;
-  private final double w;
-
-  public static Quaternion fromAxisAngle(Vector3 axis, double angle) {
-    Vector3 normalized = axis.normalize();
-    double sin = Math.sin(angle / 2.0d);
-    double cos = Math.cos(angle / 2.0d);
-    return new Quaternion(normalized.getX() * sin, normalized.getY() * sin,
-        normalized.getZ() * sin, cos);
-  }
-
-  public static Quaternion fromQuaternionMessage(geometry_msgs.Quaternion message) {
-    return new Quaternion(message.getX(), message.getY(), message.getZ(), message.getW());
-  }
-
-  public static Quaternion rotationBetweenVectors(Vector3 vector1, Vector3 vector2) {
-    Preconditions.checkArgument(vector1.getMagnitude() > 0,
-        "Cannot calculate rotation between zero-length vectors.");
-    Preconditions.checkArgument(vector2.getMagnitude() > 0,
-        "Cannot calculate rotation between zero-length vectors.");
-    if (vector1.normalize().equals(vector2.normalize())) {
-      return identity();
-    }
-    double angle =
-        Math.acos(vector1.dotProduct(vector2) / (vector1.getMagnitude() * vector2.getMagnitude()));
-    double axisX = vector1.getY() * vector2.getZ() - vector1.getZ() * vector2.getY();
-    double axisY = vector1.getZ() * vector2.getX() - vector1.getX() * vector2.getZ();
-    double axisZ = vector1.getX() * vector2.getY() - vector1.getY() * vector2.getX();
-    return fromAxisAngle(new Vector3(axisX, axisY, axisZ), angle);
-  }
-
-  public static Quaternion identity() {
-    return new Quaternion(0, 0, 0, 1);
-  }
-
-  public Quaternion(double x, double y, double z, double w) {
-    this.x = x;
-    this.y = y;
-    this.z = z;
-    this.w = w;
-  }
-
-  public Quaternion scale(double factor) {
-    return new Quaternion(x * factor, y * factor, z * factor, w * factor);
-  }
-
-  public Quaternion conjugate() {
-    return new Quaternion(-x, -y, -z, w);
-  }
-
-  public Quaternion invert() {
-    double mm = getMagnitudeSquared();
-    Preconditions.checkState(mm != 0);
-    return conjugate().scale(1 / mm);
-  }
-
-  public Quaternion normalize() {
-    return scale(1 / getMagnitude());
-  }
-
-  public Quaternion multiply(Quaternion other) {
-    return new Quaternion(w * other.x + x * other.w + y * other.z - z * other.y, w * other.y + y
-        * other.w + z * other.x - x * other.z, w * other.z + z * other.w + x * other.y - y
-        * other.x, w * other.w - x * other.x - y * other.y - z * other.z);
-  }
-
-  public Vector3 rotateAndScaleVector(Vector3 vector) {
-    Quaternion vectorQuaternion = new Quaternion(vector.getX(), vector.getY(), vector.getZ(), 0);
-    Quaternion rotatedQuaternion = multiply(vectorQuaternion.multiply(conjugate()));
-    return new Vector3(rotatedQuaternion.getX(), rotatedQuaternion.getY(), rotatedQuaternion.getZ());
-  }
-
-  public double getX() {
-    return x;
-  }
-
-  public double getY() {
-    return y;
-  }
-
-  public double getZ() {
-    return z;
-  }
-
-  public double getW() {
-    return w;
-  }
-
-  public double getMagnitudeSquared() {
-    return x * x + y * y + z * z + w * w;
-  }
-
-  public double getMagnitude() {
-    return Math.sqrt(getMagnitudeSquared());
-  }
-
-  public boolean isAlmostNeutral(double epsilon) {
-    return Math.abs(1 - x * x - y * y - z * z - w * w) < epsilon;
-  }
-
-  public geometry_msgs.Quaternion toQuaternionMessage(geometry_msgs.Quaternion result) {
-    result.setX(x);
-    result.setY(y);
-    result.setZ(z);
-    result.setW(w);
-    return result;
-  }
-
-  public boolean almostEquals(Quaternion other, double epsilon) {
-    List<Double> epsilons = Lists.newArrayList();
-    epsilons.add(x - other.x);
-    epsilons.add(y - other.y);
-    epsilons.add(z - other.z);
-    epsilons.add(w - other.w);
-    for (double e : epsilons) {
-      if (Math.abs(e) > epsilon) {
-        return false;
-      }
-    }
-    return true;
-  }
-
-  @Override
-  public String toString() {
-    return String.format("Quaternion<x: %.4f, y: %.4f, z: %.4f, w: %.4f>", x, y, z, w);
-  }
-
-  @Override
-  public int hashCode() {
-    // Ensure that -0 and 0 are considered equal.
-    double w = this.w == 0 ? 0 : this.w;
-    double x = this.x == 0 ? 0 : this.x;
-    double y = this.y == 0 ? 0 : this.y;
-    double z = this.z == 0 ? 0 : this.z;
-    final int prime = 31;
-    int result = 1;
-    long temp;
-    temp = Double.doubleToLongBits(w);
-    result = prime * result + (int) (temp ^ (temp >>> 32));
-    temp = Double.doubleToLongBits(x);
-    result = prime * result + (int) (temp ^ (temp >>> 32));
-    temp = Double.doubleToLongBits(y);
-    result = prime * result + (int) (temp ^ (temp >>> 32));
-    temp = Double.doubleToLongBits(z);
-    result = prime * result + (int) (temp ^ (temp >>> 32));
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (obj == null)
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    Quaternion other = (Quaternion) obj;
-    // Ensure that -0 and 0 are considered equal.
-    double w = this.w == 0 ? 0 : this.w;
-    double x = this.x == 0 ? 0 : this.x;
-    double y = this.y == 0 ? 0 : this.y;
-    double z = this.z == 0 ? 0 : this.z;
-    double otherW = other.w == 0 ? 0 : other.w;
-    double otherX = other.x == 0 ? 0 : other.x;
-    double otherY = other.y == 0 ? 0 : other.y;
-    double otherZ = other.z == 0 ? 0 : other.z;
-    if (Double.doubleToLongBits(w) != Double.doubleToLongBits(otherW))
-      return false;
-    if (Double.doubleToLongBits(x) != Double.doubleToLongBits(otherX))
-      return false;
-    if (Double.doubleToLongBits(y) != Double.doubleToLongBits(otherY))
-      return false;
-    if (Double.doubleToLongBits(z) != Double.doubleToLongBits(otherZ))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/Transform.java b/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/Transform.java
deleted file mode 100644
index c79c1415..00000000
--- a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/Transform.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-
-package org.ros.rosjava_geometry;
-
-import org.ros.message.Time;
-import org.ros.namespace.GraphName;
-
-/**
- * A transformation in terms of translation, rotation, and scale.
- *
- * @author damonkohler@google.com (Damon Kohler)
- * @author moesenle@google.com (Lorenz Moesenlechner)
- */
-public class Transform {
-
-  private Vector3 translation;
-  private Quaternion rotationAndScale;
-
-  public static Transform fromTransformMessage(geometry_msgs.Transform message) {
-    return new Transform(Vector3.fromVector3Message(message.getTranslation()),
-        Quaternion.fromQuaternionMessage(message.getRotation()));
-  }
-
-  public static Transform fromPoseMessage(geometry_msgs.Pose message) {
-    return new Transform(Vector3.fromPointMessage(message.getPosition()),
-        Quaternion.fromQuaternionMessage(message.getOrientation()));
-  }
-
-  public static Transform identity() {
-    return new Transform(Vector3.zero(), Quaternion.identity());
-  }
-
-  public static Transform xRotation(double angle) {
-    return new Transform(Vector3.zero(), Quaternion.fromAxisAngle(Vector3.xAxis(), angle));
-  }
-
-  public static Transform yRotation(double angle) {
-    return new Transform(Vector3.zero(), Quaternion.fromAxisAngle(Vector3.yAxis(), angle));
-  }
-
-  public static Transform zRotation(double angle) {
-    return new Transform(Vector3.zero(), Quaternion.fromAxisAngle(Vector3.zAxis(), angle));
-  }
-
-  public static Transform translation(double x, double y, double z) {
-    return new Transform(new Vector3(x, y, z), Quaternion.identity());
-  }
-
-  public static Transform translation(Vector3 vector) {
-    return new Transform(vector, Quaternion.identity());
-  }
-
-  public Transform(Vector3 translation, Quaternion rotation) {
-    this.translation = translation;
-    this.rotationAndScale = rotation;
-  }
-
-  /**
-   * Apply another {@link Transform} to this {@link Transform}.
-   *
-   * @param other
-   *          the {@link Transform} to apply to this {@link Transform}
-   * @return the resulting {@link Transform}
-   */
-  public Transform multiply(Transform other) {
-    return new Transform(apply(other.translation), apply(other.rotationAndScale));
-  }
-
-  public Transform invert() {
-    Quaternion inverseRotationAndScale = rotationAndScale.invert();
-    return new Transform(inverseRotationAndScale.rotateAndScaleVector(translation.invert()),
-        inverseRotationAndScale);
-  }
-
-  public Vector3 apply(Vector3 vector) {
-    return rotationAndScale.rotateAndScaleVector(vector).add(translation);
-  }
-
-  public Quaternion apply(Quaternion quaternion) {
-    return rotationAndScale.multiply(quaternion);
-  }
-
-  public Transform scale(double factor) {
-    return new Transform(translation, rotationAndScale.scale(Math.sqrt(factor)));
-  }
-
-  public double getScale() {
-    return rotationAndScale.getMagnitudeSquared();
-  }
-
-  /**
-   * @see <a
-   *      href="http://en.wikipedia.org/wiki/Rotation_matrix#Quaternion">Quaternion
-   *      rotation matrix</a>
-   */
-  public double[] toMatrix() {
-    double x = rotationAndScale.getX();
-    double y = rotationAndScale.getY();
-    double z = rotationAndScale.getZ();
-    double w = rotationAndScale.getW();
-    double mm = rotationAndScale.getMagnitudeSquared();
-    return new double[] { mm - 2 * y * y - 2 * z * z, 2 * x * y + 2 * z * w, 2 * x * z - 2 * y * w,
-        0, 2 * x * y - 2 * z * w, mm - 2 * x * x - 2 * z * z, 2 * y * z + 2 * x * w, 0,
-        2 * x * z + 2 * y * w, 2 * y * z - 2 * x * w, mm - 2 * x * x - 2 * y * y, 0,
-        translation.getX(), translation.getY(), translation.getZ(), 1 };
-  }
-
-  public geometry_msgs.Transform toTransformMessage(geometry_msgs.Transform result) {
-    result.setTranslation(translation.toVector3Message(result.getTranslation()));
-    result.setRotation(rotationAndScale.toQuaternionMessage(result.getRotation()));
-    return result;
-  }
-
-  public geometry_msgs.Pose toPoseMessage(geometry_msgs.Pose result) {
-    result.setPosition(translation.toPointMessage(result.getPosition()));
-    result.setOrientation(rotationAndScale.toQuaternionMessage(result.getOrientation()));
-    return result;
-  }
-
-  public geometry_msgs.PoseStamped toPoseStampedMessage(GraphName frame, Time stamp,
-      geometry_msgs.PoseStamped result) {
-    result.getHeader().setFrameId(frame.toString());
-    result.getHeader().setStamp(stamp);
-    result.setPose(toPoseMessage(result.getPose()));
-    return result;
-  }
-
-  public boolean almostEquals(Transform other, double epsilon) {
-    return translation.almostEquals(other.translation, epsilon)
-        && rotationAndScale.almostEquals(other.rotationAndScale, epsilon);
-  }
-
-  public Vector3 getTranslation() {
-    return translation;
-  }
-
-  public Quaternion getRotationAndScale() {
-    return rotationAndScale;
-  }
-
-  @Override
-  public String toString() {
-    return String.format("Transform<%s, %s>", translation, rotationAndScale);
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = 1;
-    result = prime * result + ((rotationAndScale == null) ? 0 : rotationAndScale.hashCode());
-    result = prime * result + ((translation == null) ? 0 : translation.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (obj == null)
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    Transform other = (Transform) obj;
-    if (rotationAndScale == null) {
-      if (other.rotationAndScale != null)
-        return false;
-    } else if (!rotationAndScale.equals(other.rotationAndScale))
-      return false;
-    if (translation == null) {
-      if (other.translation != null)
-        return false;
-    } else if (!translation.equals(other.translation))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/Vector3.java b/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/Vector3.java
deleted file mode 100644
index b5c84ebf..00000000
--- a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/Vector3.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-
-package org.ros.rosjava_geometry;
-
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-/**
- * A three dimensional vector.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- * @author moesenle@google.com (Lorenz Moesenlechner)
- */
-public class Vector3 {
-
-  private static final Vector3 ZERO = new Vector3(0, 0, 0);
-  private static final Vector3 X_AXIS = new Vector3(1, 0, 0);
-  private static final Vector3 Y_AXIS = new Vector3(0, 1, 0);
-  private static final Vector3 Z_AXIS = new Vector3(0, 0, 1);
-
-  private final double x;
-  private final double y;
-  private final double z;
-
-  public static Vector3 fromVector3Message(geometry_msgs.Vector3 message) {
-    return new Vector3(message.getX(), message.getY(), message.getZ());
-  }
-
-  public static Vector3 fromPointMessage(geometry_msgs.Point message) {
-    return new Vector3(message.getX(), message.getY(), message.getZ());
-  }
-
-  public static Vector3 zero() {
-    return ZERO;
-  }
-
-  public static Vector3 xAxis() {
-    return X_AXIS;
-  }
-
-  public static Vector3 yAxis() {
-    return Y_AXIS;
-  }
-
-  public static Vector3 zAxis() {
-    return Z_AXIS;
-  }
-
-  public Vector3(double x, double y, double z) {
-    this.x = x;
-    this.y = y;
-    this.z = z;
-  }
-
-  public Vector3 add(Vector3 other) {
-    return new Vector3(x + other.x, y + other.y, z + other.z);
-  }
-
-  public Vector3 subtract(Vector3 other) {
-    return new Vector3(x - other.x, y - other.y, z - other.z);
-  }
-
-  public Vector3 invert() {
-    return new Vector3(-x, -y, -z);
-  }
-
-  public double dotProduct(Vector3 other) {
-    return x * other.x + y * other.y + z * other.z;
-  }
-
-  public Vector3 normalize() {
-    return new Vector3(x / getMagnitude(), y / getMagnitude(), z / getMagnitude());
-  }
-
-  public Vector3 scale(double factor) {
-    return new Vector3(x * factor, y * factor, z * factor);
-  }
-
-  public double getX() {
-    return x;
-  }
-
-  public double getY() {
-    return y;
-  }
-
-  public double getZ() {
-    return z;
-  }
-
-  public double getMagnitudeSquared() {
-    return x * x + y * y + z * z;
-  }
-
-  public double getMagnitude() {
-    return Math.sqrt(getMagnitudeSquared());
-  }
-
-  public geometry_msgs.Vector3 toVector3Message(geometry_msgs.Vector3 result) {
-    result.setX(x);
-    result.setY(y);
-    result.setZ(z);
-    return result;
-  }
-
-  public geometry_msgs.Point toPointMessage(geometry_msgs.Point result) {
-    result.setX(x);
-    result.setY(y);
-    result.setZ(z);
-    return result;
-  }
-
-  public boolean almostEquals(Vector3 other, double epsilon) {
-    List<Double> epsilons = Lists.newArrayList();
-    epsilons.add(x - other.x);
-    epsilons.add(y - other.y);
-    epsilons.add(z - other.z);
-    for (double e : epsilons) {
-      if (Math.abs(e) > epsilon) {
-        return false;
-      }
-    }
-    return true;
-  }
-
-  @Override
-  public String toString() {
-    return String.format("Vector3<x: %.4f, y: %.4f, z: %.4f>", x, y, z);
-  }
-
-  @Override
-  public int hashCode() {
-    // Ensure that -0 and 0 are considered equal.
-    double x = this.x == 0 ? 0 : this.x;
-    double y = this.y == 0 ? 0 : this.y;
-    double z = this.z == 0 ? 0 : this.z;
-    final int prime = 31;
-    int result = 1;
-    long temp;
-    temp = Double.doubleToLongBits(x);
-    result = prime * result + (int) (temp ^ (temp >>> 32));
-    temp = Double.doubleToLongBits(y);
-    result = prime * result + (int) (temp ^ (temp >>> 32));
-    temp = Double.doubleToLongBits(z);
-    result = prime * result + (int) (temp ^ (temp >>> 32));
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (obj == null)
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    Vector3 other = (Vector3) obj;
-    // Ensure that -0 and 0 are considered equal.
-    double x = this.x == 0 ? 0 : this.x;
-    double y = this.y == 0 ? 0 : this.y;
-    double z = this.z == 0 ? 0 : this.z;
-    double otherX = other.x == 0 ? 0 : other.x;
-    double otherY = other.y == 0 ? 0 : other.y;
-    double otherZ = other.z == 0 ? 0 : other.z;
-    if (Double.doubleToLongBits(x) != Double.doubleToLongBits(otherX))
-      return false;
-    if (Double.doubleToLongBits(y) != Double.doubleToLongBits(otherY))
-      return false;
-    if (Double.doubleToLongBits(z) != Double.doubleToLongBits(otherZ))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/package-info.java b/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/package-info.java
deleted file mode 100644
index e66a3a4b..00000000
--- a/rosjava_geometry/src/main/java/org/ros/rosjava_geometry/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- * 
- * 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.
- */
-
-/**
- * Provides the classes for common geometry operations and representations (e.g. transformations).
- */
-package org.ros.rosjava_geometry;
\ No newline at end of file
diff --git a/rosjava_geometry/src/test/java/org/ros/rosjava_geometry/FrameTransformTreeTest.java b/rosjava_geometry/src/test/java/org/ros/rosjava_geometry/FrameTransformTreeTest.java
deleted file mode 100644
index bbcdfacb..00000000
--- a/rosjava_geometry/src/test/java/org/ros/rosjava_geometry/FrameTransformTreeTest.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-
-package org.ros.rosjava_geometry;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.ros.internal.message.DefaultMessageFactory;
-import org.ros.internal.message.definition.MessageDefinitionReflectionProvider;
-import org.ros.message.MessageDefinitionProvider;
-import org.ros.message.MessageFactory;
-import org.ros.message.Time;
-import org.ros.namespace.GraphName;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class FrameTransformTreeTest {
-
-  private FrameTransformTree frameTransformTree;
-  private MessageDefinitionProvider messageDefinitionProvider;
-  private MessageFactory messageFactory;
-
-  @Before
-  public void before() {
-    frameTransformTree = new FrameTransformTree();
-    messageDefinitionProvider = new MessageDefinitionReflectionProvider();
-    messageFactory = new DefaultMessageFactory(messageDefinitionProvider);
-  }
-
-  @Test
-  public void testUpdateAndGet() {
-    FrameTransform frameTransform = new FrameTransform(Transform.identity(),
-        GraphName.of("foo"), GraphName.of("bar"), new Time());
-    frameTransformTree.update(frameTransform);
-    assertEquals(frameTransform, frameTransformTree.get("foo"));
-  }
-
-  @Test
-  public void testUpdateAndGetWithTransformStampedMessage() {
-    FrameTransform frameTransform = new FrameTransform(Transform.identity(),
-        GraphName.of("foo"), GraphName.of("bar"), new Time());
-    frameTransformTree.update(newTransformStampedMessage(Transform.identity(),
-        "foo", "bar", new Time()));
-    assertEquals(frameTransform, frameTransformTree.get("foo"));
-  }
-
-  private geometry_msgs.TransformStamped newTransformStampedMessage(
-      Transform transform, String source, String target, Time time) {
-    geometry_msgs.TransformStamped message = messageFactory
-        .newFromType(geometry_msgs.TransformStamped._TYPE);
-    FrameTransform frameTransform = new FrameTransform(transform,
-        GraphName.of(source), GraphName.of(target), time);
-    frameTransform.toTransformStampedMessage(message);
-    return message;
-  }
-
-  @Test
-  public void testIdentityTransforms() {
-    frameTransformTree.update(newTransformStampedMessage(Transform.identity(),
-        "baz", "bar", new Time()));
-    frameTransformTree.update(newTransformStampedMessage(Transform.identity(),
-        "bar", "foo", new Time()));
-
-    // Full tree transform.
-    {
-      FrameTransform frameTransform = frameTransformTree
-          .transform("baz", "foo");
-      assertTrue(frameTransform != null);
-      assertEquals(GraphName.of("baz"), frameTransform.getSourceFrame());
-      assertEquals(GraphName.of("foo"), frameTransform.getTargetFrame());
-      assertEquals(Transform.identity(), frameTransform.getTransform());
-    }
-
-    // Same node transform.
-    {
-      FrameTransform frameTransform = frameTransformTree
-          .transform("baz", "baz");
-      assertTrue(frameTransform != null);
-      assertEquals(GraphName.of("baz"), frameTransform.getSourceFrame());
-      assertEquals(GraphName.of("baz"), frameTransform.getTargetFrame());
-      assertEquals(Transform.identity(), frameTransform.getTransform());
-    }
-
-    // Same node transform.
-    {
-      FrameTransform frameTransform = frameTransformTree
-          .transform("bar", "bar");
-      assertTrue(frameTransform != null);
-      assertEquals(GraphName.of("bar"), frameTransform.getSourceFrame());
-      assertEquals(GraphName.of("bar"), frameTransform.getTargetFrame());
-      assertEquals(Transform.identity(), frameTransform.getTransform());
-    }
-
-    // Root-to-root transform.
-    {
-      FrameTransform frameTransform = frameTransformTree
-          .transform("foo", "foo");
-      assertTrue(frameTransform != null);
-      assertEquals(GraphName.of("foo"), frameTransform.getSourceFrame());
-      assertEquals(GraphName.of("foo"), frameTransform.getTargetFrame());
-      assertEquals(Transform.identity(), frameTransform.getTransform());
-    }
-
-    // Root-to-leaf transform.
-    {
-      FrameTransform frameTransform = frameTransformTree
-          .transform("foo", "baz");
-      assertTrue(frameTransform != null);
-      assertEquals(GraphName.of("foo"), frameTransform.getSourceFrame());
-      assertEquals(GraphName.of("baz"), frameTransform.getTargetFrame());
-      assertEquals(Transform.identity(), frameTransform.getTransform());
-    }
-  }
-
-  /**
-   * Fills the {@link FrameTransformTree} with the following frame topography:
-   * 
-   * <pre>
-   *       foo
-   *    bar   bop
-   * baz         fuz
-   * </pre>
-   */
-  private void updateFrameTransformTree() {
-    {
-      Transform transform = Transform.translation(0, 1, 0);
-      frameTransformTree.update(newTransformStampedMessage(transform, "bar",
-          "foo", new Time()));
-    }
-    {
-      Transform transform = Transform.xRotation(Math.PI / 2);
-      frameTransformTree.update(newTransformStampedMessage(transform, "baz",
-          "bar", new Time()));
-    }
-    {
-      Transform transform = Transform.translation(1, 0, 0);
-      frameTransformTree.update(newTransformStampedMessage(transform, "bop",
-          "foo", new Time()));
-    }
-    {
-      Transform transform = Transform.yRotation(Math.PI / 2);
-      frameTransformTree.update(newTransformStampedMessage(transform, "fuz",
-          "bop", new Time()));
-    }
-  }
-
-  private void checkBazToFooTransform(FrameTransform frameTransform) {
-    // If we were to reverse the order of the transforms in our implementation,
-    // we would expect the translation vector to be <0, 0, 1> instead.
-    Transform transform = Transform.translation(0, 1, 0).multiply(
-        Transform.xRotation(Math.PI / 2));
-    Quaternion rotationAndScale = transform.getRotationAndScale();
-    assertTrue(String.format("%s is not neutral.", rotationAndScale),
-        rotationAndScale.isAlmostNeutral(1e-9));
-    assertEquals(GraphName.of("baz"), frameTransform.getSourceFrame());
-    assertEquals(GraphName.of("foo"), frameTransform.getTargetFrame());
-    assertTrue(transform.almostEquals(frameTransform.getTransform(), 1e-9));
-  }
-
-  @Test
-  public void testTransformBazToRoot() {
-    updateFrameTransformTree();
-    checkBazToFooTransform(frameTransformTree.transformToRoot(GraphName
-        .of("baz")));
-  }
-
-  @Test
-  public void testTransformBazToFoo() {
-    updateFrameTransformTree();
-    checkBazToFooTransform(frameTransformTree.transform("baz", "foo"));
-    checkBazToFooTransform(frameTransformTree.transform("foo", "baz").invert());
-  }
-
-  private void checkFuzToFooTransform(FrameTransform frameTransform) {
-    // If we were to reverse the order of the transforms in our implementation,
-    // we would expect the translation vector to be <0, 0, 1> instead.
-    Transform transform = Transform.translation(1, 0, 0).multiply(
-        Transform.yRotation(Math.PI / 2));
-    Quaternion rotationAndScale = transform.getRotationAndScale();
-    assertTrue(String.format("%s is not neutral.", rotationAndScale),
-        rotationAndScale.isAlmostNeutral(1e-9));
-    assertEquals(GraphName.of("fuz"), frameTransform.getSourceFrame());
-    assertEquals(GraphName.of("foo"), frameTransform.getTargetFrame());
-    assertTrue(
-        String.format("Expected %s != %s", transform,
-            frameTransform.getTransform()),
-        transform.almostEquals(frameTransform.getTransform(), 1e-9));
-  }
-
-  @Test
-  public void testTransformFuzToRoot() {
-    updateFrameTransformTree();
-    checkFuzToFooTransform(frameTransformTree.transformToRoot(GraphName
-        .of("fuz")));
-  }
-
-  @Test
-  public void testTransformFuzToFoo() {
-    updateFrameTransformTree();
-    checkFuzToFooTransform(frameTransformTree.transform("fuz", "foo"));
-    checkFuzToFooTransform(frameTransformTree.transform("foo", "fuz").invert());
-  }
-
-  @Test
-  public void testTransformBazToFuz() {
-    updateFrameTransformTree();
-    FrameTransform frameTransform = frameTransformTree.transform("baz", "fuz");
-    Transform transform = Transform.yRotation(Math.PI / 2).invert()
-        .multiply(Transform.translation(1, 0, 0).invert())
-        .multiply(Transform.translation(0, 1, 0))
-        .multiply(Transform.xRotation(Math.PI / 2));
-    assertTrue(transform.getRotationAndScale().isAlmostNeutral(1e-9));
-    assertEquals(GraphName.of("baz"), frameTransform.getSourceFrame());
-    assertEquals(GraphName.of("fuz"), frameTransform.getTargetFrame());
-    assertTrue(
-        String.format("Expected %s != %s", transform,
-            frameTransform.getTransform()),
-        transform.almostEquals(frameTransform.getTransform(), 1e-9));
-  }
-
-  @Test
-  public void testTimeTravel() {
-    FrameTransform frameTransform1 = new FrameTransform(Transform.identity(),
-        GraphName.of("foo"), GraphName.of("bar"), new Time());
-    FrameTransform frameTransform2 = new FrameTransform(Transform.identity(),
-        GraphName.of("foo"), GraphName.of("bar"), new Time(2));
-    FrameTransform frameTransform3 = new FrameTransform(Transform.identity(),
-        GraphName.of("foo"), GraphName.of("bar"), new Time(4));
-    frameTransformTree.update(frameTransform1);
-    frameTransformTree.update(frameTransform2);
-    frameTransformTree.update(frameTransform3);
-    assertEquals(frameTransform3, frameTransformTree.get("foo"));
-    assertEquals(frameTransform1, frameTransformTree.get("foo", new Time()));
-    assertEquals(frameTransform1, frameTransformTree.get("foo", new Time(0.5)));
-    assertEquals(frameTransform2, frameTransformTree.get("foo", new Time(1.5)));
-    assertEquals(frameTransform2, frameTransformTree.get("foo", new Time(2)));
-    assertEquals(frameTransform3, frameTransformTree.get("foo", new Time(10)));
-  }
-}
diff --git a/rosjava_geometry/src/test/java/org/ros/rosjava_geometry/QuaternionTest.java b/rosjava_geometry/src/test/java/org/ros/rosjava_geometry/QuaternionTest.java
deleted file mode 100644
index 5a2717c6..00000000
--- a/rosjava_geometry/src/test/java/org/ros/rosjava_geometry/QuaternionTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- *
- * 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.
- */
-
-package org.ros.rosjava_geometry;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class QuaternionTest {
-
-  @Test
-  public void testAxisAngleToQuaternion() {
-    Quaternion quaternion;
-
-    quaternion = Quaternion.fromAxisAngle(Vector3.zAxis(), 0);
-    assertEquals(0, quaternion.getX(), 1e-9);
-    assertEquals(0, quaternion.getY(), 1e-9);
-    assertEquals(0, quaternion.getZ(), 1e-9);
-    assertEquals(1, quaternion.getW(), 1e-9);
-
-    quaternion = Quaternion.fromAxisAngle(Vector3.zAxis(), Math.PI);
-    assertEquals(0, quaternion.getX(), 1e-9);
-    assertEquals(0, quaternion.getY(), 1e-9);
-    assertEquals(1, quaternion.getZ(), 1e-9);
-    assertEquals(0, quaternion.getW(), 1e-9);
-
-    quaternion = Quaternion.fromAxisAngle(Vector3.zAxis(), Math.PI / 2);
-    assertEquals(0, quaternion.getX(), 1e-9);
-    assertEquals(0, quaternion.getY(), 1e-9);
-    assertEquals(0.7071067811865475, quaternion.getZ(), 1e-9);
-    assertEquals(0.7071067811865475, quaternion.getW(), 1e-9);
-
-    quaternion = Quaternion.fromAxisAngle(Vector3.zAxis(), -Math.PI / 2);
-    assertEquals(0, quaternion.getX(), 1e-9);
-    assertEquals(0, quaternion.getY(), 1e-9);
-    assertEquals(-0.7071067811865475, quaternion.getZ(), 1e-9);
-    assertEquals(0.7071067811865475, quaternion.getW(), 1e-9);
-
-    quaternion = Quaternion.fromAxisAngle(Vector3.zAxis(), 0.75 * Math.PI);
-    assertEquals(0, quaternion.getX(), 1e-9);
-    assertEquals(0, quaternion.getY(), 1e-9);
-    assertEquals(0.9238795325112867, quaternion.getZ(), 1e-9);
-    assertEquals(0.38268343236508984, quaternion.getW(), 1e-9);
-
-    quaternion = Quaternion.fromAxisAngle(Vector3.zAxis(), -0.75 * Math.PI);
-    assertEquals(0, quaternion.getX(), 1e-9);
-    assertEquals(0, quaternion.getY(), 1e-9);
-    assertEquals(-0.9238795325112867, quaternion.getZ(), 1e-9);
-    assertEquals(0.38268343236508984, quaternion.getW(), 1e-9);
-
-    quaternion = Quaternion.fromAxisAngle(Vector3.zAxis(), 1.5 * Math.PI);
-    assertEquals(0, quaternion.getX(), 1e-9);
-    assertEquals(0, quaternion.getY(), 1e-9);
-    assertEquals(0.7071067811865475, quaternion.getZ(), 1e-9);
-    assertEquals(-0.7071067811865475, quaternion.getW(), 1e-9);
-  }
-
-  @Test
-  public void testInvert() {
-    Quaternion inverse = Quaternion.fromAxisAngle(Vector3.zAxis(), Math.PI / 2).invert();
-    assertEquals(0, inverse.getX(), 1e-9);
-    assertEquals(0, inverse.getY(), 1e-9);
-    assertEquals(-0.7071067811865475, inverse.getZ(), 1e-9);
-    assertEquals(0.7071067811865475, inverse.getW(), 1e-9);
-  }
-
-  @Test
-  public void testMultiply() {
-    Quaternion quaternion = Quaternion.fromAxisAngle(Vector3.zAxis(), Math.PI / 2);
-    Quaternion inverse = quaternion.invert();
-    Quaternion rotated = quaternion.multiply(inverse);
-    assertEquals(1, rotated.getW(), 1e-9);
-  }
-
-  @Test
-  public void testRotateVector() {
-    Quaternion quaternion = Quaternion.fromAxisAngle(Vector3.zAxis(), Math.PI / 2);
-    Vector3 vector = new Vector3(1, 0, 0);
-    Vector3 rotated = quaternion.rotateAndScaleVector(vector);
-    assertEquals(0, rotated.getX(), 1e-9);
-    assertEquals(1, rotated.getY(), 1e-9);
-    assertEquals(0, rotated.getZ(), 1e-9);
-  }
-}
diff --git a/rosjava_geometry/src/test/java/org/ros/rosjava_geometry/TransformTest.java b/rosjava_geometry/src/test/java/org/ros/rosjava_geometry/TransformTest.java
deleted file mode 100644
index f1c73e37..00000000
--- a/rosjava_geometry/src/test/java/org/ros/rosjava_geometry/TransformTest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- *
- * 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.
- */
-
-package org.ros.rosjava_geometry;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Test;
-
-import java.util.Random;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class TransformTest {
-
-  @Test
-  public void testMultiply() {
-    Transform transform1 = new Transform(Vector3.xAxis(), Quaternion.identity());
-    Transform transform2 =
-        new Transform(Vector3.yAxis(), Quaternion.fromAxisAngle(Vector3.zAxis(), Math.PI / 2));
-
-    Transform result1 = transform1.multiply(transform2);
-    assertEquals(1.0, result1.getTranslation().getX(), 1e-9);
-    assertEquals(1.0, result1.getTranslation().getY(), 1e-9);
-    assertEquals(0.0, result1.getTranslation().getZ(), 1e-9);
-    assertEquals(0.0, result1.getRotationAndScale().getX(), 1e-9);
-    assertEquals(0.0, result1.getRotationAndScale().getY(), 1e-9);
-    assertEquals(0.7071067811865475, result1.getRotationAndScale().getZ(), 1e-9);
-    assertEquals(0.7071067811865475, result1.getRotationAndScale().getW(), 1e-9);
-
-    Transform result2 = transform2.multiply(transform1);
-    assertEquals(0.0, result2.getTranslation().getX(), 1e-9);
-    assertEquals(2.0, result2.getTranslation().getY(), 1e-9);
-    assertEquals(0.0, result2.getTranslation().getZ(), 1e-9);
-    assertEquals(0.0, result2.getRotationAndScale().getX(), 1e-9);
-    assertEquals(0.0, result2.getRotationAndScale().getY(), 1e-9);
-    assertEquals(0.7071067811865475, result2.getRotationAndScale().getZ(), 1e-9);
-    assertEquals(0.7071067811865475, result2.getRotationAndScale().getW(), 1e-9);
-  }
-
-  @Test
-  public void testInvert() {
-    Transform transform =
-        new Transform(Vector3.yAxis(), Quaternion.fromAxisAngle(Vector3.zAxis(), Math.PI / 2));
-    Transform inverse = transform.invert();
-
-    assertEquals(-1.0, inverse.getTranslation().getX(), 1e-9);
-    assertEquals(0.0, inverse.getTranslation().getY(), 1e-9);
-    assertEquals(0.0, inverse.getTranslation().getZ(), 1e-9);
-    assertEquals(0.0, inverse.getRotationAndScale().getX(), 1e-9);
-    assertEquals(0.0, inverse.getRotationAndScale().getY(), 1e-9);
-    assertEquals(-0.7071067811865475, inverse.getRotationAndScale().getZ(), 1e-9);
-    assertEquals(0.7071067811865475, inverse.getRotationAndScale().getW(), 1e-9);
-
-    Transform neutral = transform.multiply(inverse);
-    assertTrue(neutral.almostEquals(Transform.identity(), 1e-9));
-  }
-
-  @Test
-  public void testInvertRandom() {
-    Random random = new Random();
-    random.setSeed(42);
-    for (int i = 0; i < 10000; i++) {
-      Vector3 vector = randomVector(random);
-      Quaternion quaternion = randomQuaternion(random);
-      Transform transform = new Transform(vector, quaternion);
-      Transform inverse = transform.invert();
-      Transform neutral = transform.multiply(inverse);
-      assertTrue(neutral.almostEquals(Transform.identity(), 1e-9));
-    }
-  }
-
-  @Test
-  public void testMultiplyRandom() {
-    Random random = new Random();
-    random.setSeed(42);
-    for (int i = 0; i < 10000; i++) {
-      Vector3 data = randomVector(random);
-      Vector3 vector1 = randomVector(random);
-      Vector3 vector2 = randomVector(random);
-      Quaternion quaternion1 = randomQuaternion(random);
-      Quaternion quaternion2 = randomQuaternion(random);
-      Transform transform1 = new Transform(vector1, quaternion1);
-      Transform transform2 = new Transform(vector2, quaternion2);
-      Vector3 result1 = transform1.apply(transform2.apply(data));
-      Vector3 result2 = transform1.multiply(transform2).apply(data);
-      assertTrue(result1.almostEquals(result2, 1e-9));
-    }
-  }
-
-  @Test
-  public void testScale() {
-    assertTrue(Vector3.xAxis().scale(2)
-        .almostEquals(Transform.identity().scale(2).apply(Vector3.xAxis()), 1e-9));
-  }
-
-  private Quaternion randomQuaternion(Random random) {
-    return new Quaternion(random.nextDouble(), random.nextDouble(), random.nextDouble(),
-        random.nextDouble());
-  }
-
-  private Vector3 randomVector(Random random) {
-    return new Vector3(random.nextDouble(), random.nextDouble(), random.nextDouble());
-  }
-}
diff --git a/rosjava_geometry/src/test/java/org/ros/rosjava_geometry/Vector3Test.java b/rosjava_geometry/src/test/java/org/ros/rosjava_geometry/Vector3Test.java
deleted file mode 100644
index f6d3e6c3..00000000
--- a/rosjava_geometry/src/test/java/org/ros/rosjava_geometry/Vector3Test.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- *
- * 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.
- */
-
-package org.ros.rosjava_geometry;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class Vector3Test {
-
-  @Test
-  public void testAdd() {
-    Vector3 vector1 = new Vector3(1, 2, 3);
-    Vector3 vector2 = new Vector3(2, 3, 4);
-    Vector3 result = vector1.add(vector2);
-    assertEquals(result.getX(), 3, 1e-9);
-    assertEquals(result.getY(), 5, 1e-9);
-    assertEquals(result.getZ(), 7, 1e-9);
-  }
-
-  @Test
-  public void testSubtract() {
-    Vector3 vector1 = new Vector3(1, 2, 3);
-    Vector3 vector2 = new Vector3(2, 3, 4);
-    Vector3 result = vector1.subtract(vector2);
-    assertEquals(result.getX(), -1, 1e-9);
-    assertEquals(result.getY(), -1, 1e-9);
-    assertEquals(result.getZ(), -1, 1e-9);
-  }
-
-  @Test
-  public void testInvert() {
-    Vector3 result = new Vector3(1, 1, 1).invert();
-    assertEquals(result.getX(), -1, 1e-9);
-    assertEquals(result.getY(), -1, 1e-9);
-    assertEquals(result.getZ(), -1, 1e-9);
-  }
-
-  @Test
-  public void testDotProduct() {
-    Vector3 vector1 = new Vector3(1, 2, 3);
-    Vector3 vector2 = new Vector3(2, 3, 4);
-    assertEquals(20.0, vector1.dotProduct(vector2), 1e-9);
-  }
-
-  @Test
-  public void testLength() {
-    assertEquals(2, new Vector3(2, 0, 0).getMagnitude(), 1e-9);
-    assertEquals(2, new Vector3(0, 2, 0).getMagnitude(), 1e-9);
-    assertEquals(2, new Vector3(0, 0, 2).getMagnitude(), 1e-9);
-    assertEquals(Math.sqrt(3), new Vector3(1, 1, 1).getMagnitude(), 1e-9);
-  }
-}
diff --git a/rosjava_test/build.gradle b/rosjava_test/build.gradle
deleted file mode 100644
index 0ce12fbc..00000000
--- a/rosjava_test/build.gradle
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-
-apply plugin: 'application'
-
-mainClassName = 'org.ros.RosRun'
-
-dependencies {
-  compile project(':rosjava')
-  compile 'junit:junit:4.8.2'
-}
diff --git a/rosjava_test/scripts/serialized_message.py b/rosjava_test/scripts/serialized_message.py
deleted file mode 100644
index 56a6340d..00000000
--- a/rosjava_test/scripts/serialized_message.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2012 Google Inc.
-#
-# 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.
-
-"""Prints the serialized bytese of a nav_msgs.Odometry message in hex.
-
-This can be modified slightly to print the serialized bytes in hex for
-arbitrary ROS messages and is useful for generating test cases for rosjava
-message serialization.
-"""
-
-__author__ = 'damonkohler@google.com (Damon Kohler)'
-
-import StringIO
-
-import roslib; roslib.load_manifest('rosjava_test')
-import rospy
-
-import nav_msgs.msg as nav_msgs
-
-message = nav_msgs.Odometry()
-buf = StringIO.StringIO()
-message.serialize(buf)
-print ''.join('0x%02x,' % ord(c) for c in buf.getvalue())[:-1]
-
diff --git a/rosjava_test/src/main/java/org/ros/MessageSerializationTestNode.java b/rosjava_test/src/main/java/org/ros/MessageSerializationTestNode.java
deleted file mode 100644
index fe6ce680..00000000
--- a/rosjava_test/src/main/java/org/ros/MessageSerializationTestNode.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- * 
- * 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.
- */
-
-package org.ros;
-
-import nav_msgs.Odometry;
-import org.ros.message.MessageListener;
-import org.ros.namespace.GraphName;
-import org.ros.node.ConnectedNode;
-import org.ros.node.Node;
-import org.ros.node.NodeMain;
-import org.ros.node.topic.Publisher;
-import org.ros.node.topic.Subscriber;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageSerializationTestNode implements NodeMain {
-
-  @Override
-  public GraphName getDefaultNodeName() {
-    return GraphName.of("message_serialization_test_node");
-  }
-
-  @Override
-  public void onStart(ConnectedNode connectedNode) {
-    final Publisher<nav_msgs.Odometry> publisher =
-        connectedNode.newPublisher("odom_echo", nav_msgs.Odometry._TYPE);
-    Subscriber<nav_msgs.Odometry> subscriber =
-        connectedNode.newSubscriber("odom", nav_msgs.Odometry._TYPE);
-    subscriber.addMessageListener(new MessageListener<Odometry>() {
-      @Override
-      public void onNewMessage(Odometry message) {
-        publisher.publish(message);
-      }
-    });
-  }
-
-  @Override
-  public void onShutdown(Node node) {
-  }
-
-  @Override
-  public void onShutdownComplete(Node node) {
-  }
-
-  @Override
-  public void onError(Node node, Throwable throwable) {
-  }
-}
diff --git a/rosjava_test/src/main/java/org/ros/ParameterServerTestNode.java b/rosjava_test/src/main/java/org/ros/ParameterServerTestNode.java
deleted file mode 100644
index 523f0b08..00000000
--- a/rosjava_test/src/main/java/org/ros/ParameterServerTestNode.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- * 
- * 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.
- */
-
-package org.ros;
-
-import org.apache.commons.logging.Log;
-import org.ros.concurrent.CancellableLoop;
-import org.ros.message.MessageFactory;
-import org.ros.namespace.GraphName;
-import org.ros.namespace.NameResolver;
-import org.ros.node.AbstractNodeMain;
-import org.ros.node.ConnectedNode;
-import org.ros.node.parameter.ParameterTree;
-import org.ros.node.topic.Publisher;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * This node is used in rostest end-to-end integration tests with other client
- * libraries.
- * 
- * @author kwc@willowgarage.com (Ken Conley)
- */
-public class ParameterServerTestNode extends AbstractNodeMain {
-
-  @Override
-  public GraphName getDefaultNodeName() {
-    return GraphName.of("rosjava/parameter_server_test_node");
-  }
-
-  @SuppressWarnings("rawtypes")
-  @Override
-  public void onStart(ConnectedNode connectedNode) {
-    final Publisher<std_msgs.String> pub_tilde =
-        connectedNode.newPublisher("tilde", std_msgs.String._TYPE);
-    final Publisher<std_msgs.String> pub_string =
-        connectedNode.newPublisher("string", std_msgs.String._TYPE);
-    final Publisher<std_msgs.Int64> pub_int =
-        connectedNode.newPublisher("int", std_msgs.Int64._TYPE);
-    final Publisher<std_msgs.Bool> pub_bool =
-        connectedNode.newPublisher("bool", std_msgs.Bool._TYPE);
-    final Publisher<std_msgs.Float64> pub_float =
-        connectedNode.newPublisher("float", std_msgs.Float64._TYPE);
-    final Publisher<rosjava_test_msgs.Composite> pub_composite =
-        connectedNode.newPublisher("composite", rosjava_test_msgs.Composite._TYPE);
-    final Publisher<rosjava_test_msgs.TestArrays> pub_list =
-        connectedNode.newPublisher("list", rosjava_test_msgs.TestArrays._TYPE);
-
-    ParameterTree param = connectedNode.getParameterTree();
-
-    Log log = connectedNode.getLog();
-    MessageFactory topicMessageFactory = connectedNode.getTopicMessageFactory();
-
-    final std_msgs.String tilde_m = topicMessageFactory.newFromType(std_msgs.String._TYPE);
-    tilde_m.setData(param.getString(connectedNode.resolveName("~tilde").toString()));
-    log.info("tilde: " + tilde_m.getData());
-
-    GraphName paramNamespace = GraphName.of(param.getString("parameter_namespace"));
-    GraphName targetNamespace = GraphName.of(param.getString("target_namespace"));
-    log.info("parameter_namespace: " + paramNamespace);
-    log.info("target_namespace: " + targetNamespace);
-    NameResolver resolver = connectedNode.getResolver().newChild(paramNamespace);
-    NameResolver setResolver = connectedNode.getResolver().newChild(targetNamespace);
-
-    final std_msgs.String string_m = topicMessageFactory.newFromType(std_msgs.String._TYPE);
-    string_m.setData(param.getString(resolver.resolve("string")));
-    log.info("string: " + string_m.getData());
-    final std_msgs.Int64 int_m = topicMessageFactory.newFromType(std_msgs.Int64._TYPE);
-    int_m.setData(param.getInteger(resolver.resolve("int")));
-    log.info("int: " + int_m.getData());
-
-    final std_msgs.Bool bool_m = topicMessageFactory.newFromType(std_msgs.Bool._TYPE);
-    bool_m.setData(param.getBoolean(resolver.resolve("bool")));
-    log.info("bool: " + bool_m.getData());
-    final std_msgs.Float64 float_m = topicMessageFactory.newFromType(std_msgs.Float64._TYPE);
-    float_m.setData(param.getDouble(resolver.resolve("float")));
-    log.info("float: " + float_m.getData());
-
-    final rosjava_test_msgs.Composite composite_m =
-        topicMessageFactory.newFromType(rosjava_test_msgs.Composite._TYPE);
-    Map composite_map = param.getMap(resolver.resolve("composite"));
-    composite_m.getA().setW((Double) ((Map) composite_map.get("a")).get("w"));
-    composite_m.getA().setX((Double) ((Map) composite_map.get("a")).get("x"));
-    composite_m.getA().setY((Double) ((Map) composite_map.get("a")).get("y"));
-    composite_m.getA().setZ((Double) ((Map) composite_map.get("a")).get("z"));
-    composite_m.getB().setX((Double) ((Map) composite_map.get("b")).get("x"));
-    composite_m.getB().setY((Double) ((Map) composite_map.get("b")).get("y"));
-    composite_m.getB().setZ((Double) ((Map) composite_map.get("b")).get("z"));
-
-    final rosjava_test_msgs.TestArrays list_m = topicMessageFactory.newFromType(rosjava_test_msgs.TestArrays._TYPE);
-    // only using the integer part for easier (non-float) comparison
-    @SuppressWarnings("unchecked")
-    List<Integer> list = (List<Integer>) param.getList(resolver.resolve("list"));
-    int[] data = new int[list.size()];
-    for (int i = 0; i < list.size(); i++) {
-      data[i] = list.get(i);
-    }
-    list_m.setInt32Array(data);
-
-    // Set parameters
-    param.set(setResolver.resolve("string"), string_m.getData());
-    param.set(setResolver.resolve("int"), (int) int_m.getData());
-    param.set(setResolver.resolve("float"), float_m.getData());
-    param.set(setResolver.resolve("bool"), bool_m.getData());
-    param.set(setResolver.resolve("composite"), composite_map);
-    param.set(setResolver.resolve("list"), list);
-
-    connectedNode.executeCancellableLoop(new CancellableLoop() {
-      @Override
-      protected void loop() throws InterruptedException {
-        pub_tilde.publish(tilde_m);
-        pub_string.publish(string_m);
-        pub_int.publish(int_m);
-        pub_bool.publish(bool_m);
-        pub_float.publish(float_m);
-        pub_composite.publish(composite_m);
-        pub_list.publish(list_m);
-        Thread.sleep(100);
-      }
-    });
-  }
-}
diff --git a/rosjava_test/src/main/java/org/ros/PassthroughTestNode.java b/rosjava_test/src/main/java/org/ros/PassthroughTestNode.java
deleted file mode 100644
index 2d251bdd..00000000
--- a/rosjava_test/src/main/java/org/ros/PassthroughTestNode.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- * 
- * 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.
- */
-
-package org.ros;
-
-import org.ros.message.MessageListener;
-import org.ros.namespace.GraphName;
-import org.ros.node.AbstractNodeMain;
-import org.ros.node.ConnectedNode;
-import org.ros.node.topic.Publisher;
-import org.ros.node.topic.Subscriber;
-
-/**
- * This node is used in rostest end-to-end integration tests with other client
- * libraries.
- * 
- * @author kwc@willowgarage.com (Ken Conley)
- */
-public class PassthroughTestNode extends AbstractNodeMain {
-
-  @Override
-  public GraphName getDefaultNodeName() {
-    return GraphName.of("rosjava/passthrough_test_node");
-  }
-
-  @Override
-  public void onStart(final ConnectedNode connectedNode) {
-    // The goal of the passthrough node is simply to retransmit the messages
-    // sent to it. This allows us to external verify that the node is compatible
-    // with multiple publishers, multiple subscribers, etc...
-
-    // String pass through
-    final Publisher<std_msgs.String> pub_string =
-        connectedNode.newPublisher("string_out", std_msgs.String._TYPE);
-    MessageListener<std_msgs.String> string_cb = new MessageListener<std_msgs.String>() {
-      @Override
-      public void onNewMessage(std_msgs.String m) {
-        pub_string.publish(m);
-      }
-    };
-    Subscriber<std_msgs.String> stringSubscriber =
-        connectedNode.newSubscriber("string_in", "std_msgs/String");
-    stringSubscriber.addMessageListener(string_cb);
-
-    // Int64 pass through
-    final Publisher<std_msgs.Int64> pub_int64 = connectedNode.newPublisher("int64_out", "std_msgs/Int64");
-    MessageListener<std_msgs.Int64> int64_cb = new MessageListener<std_msgs.Int64>() {
-      @Override
-      public void onNewMessage(std_msgs.Int64 m) {
-        pub_int64.publish(m);
-      }
-    };
-    Subscriber<std_msgs.Int64> int64Subscriber = connectedNode.newSubscriber("int64_in", "std_msgs/Int64");
-    int64Subscriber.addMessageListener(int64_cb);
-
-    // TestHeader pass through
-    final Publisher<rosjava_test_msgs.TestHeader> pub_header =
-        connectedNode.newPublisher("test_header_out", rosjava_test_msgs.TestHeader._TYPE);
-    MessageListener<rosjava_test_msgs.TestHeader> header_cb = new MessageListener<rosjava_test_msgs.TestHeader>() {
-      @Override
-      public void onNewMessage(rosjava_test_msgs.TestHeader m) {
-        m.setOrigCallerId(m.getCallerId());
-        m.setCallerId(connectedNode.getName().toString());
-        pub_header.publish(m);
-      }
-    };
-    Subscriber<rosjava_test_msgs.TestHeader> testHeaderSubscriber =
-        connectedNode.newSubscriber("test_header_in", "rosjava_test_msgs/TestHeader");
-    testHeaderSubscriber.addMessageListener(header_cb);
-
-    // TestComposite pass through
-    final Publisher<rosjava_test_msgs.Composite> pub_composite =
-        connectedNode.newPublisher("composite_out", "rosjava_test_msgs/Composite");
-    MessageListener<rosjava_test_msgs.Composite> composite_cb = new MessageListener<rosjava_test_msgs.Composite>() {
-      @Override
-      public void onNewMessage(rosjava_test_msgs.Composite m) {
-        pub_composite.publish(m);
-      }
-    };
-    Subscriber<rosjava_test_msgs.Composite> compositeSubscriber =
-        connectedNode.newSubscriber("composite_in", "rosjava_test_msgs/Composite");
-    compositeSubscriber.addMessageListener(composite_cb);
-  }
-}
diff --git a/rosjava_test/src/main/java/org/ros/SlaveApiTestNode.java b/rosjava_test/src/main/java/org/ros/SlaveApiTestNode.java
deleted file mode 100644
index 7636b04d..00000000
--- a/rosjava_test/src/main/java/org/ros/SlaveApiTestNode.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- * 
- * 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.
- */
-
-package org.ros;
-
-import org.ros.concurrent.CancellableLoop;
-import org.ros.message.MessageFactory;
-import org.ros.message.MessageListener;
-import org.ros.namespace.GraphName;
-import org.ros.node.AbstractNodeMain;
-import org.ros.node.ConnectedNode;
-import org.ros.node.topic.Publisher;
-import org.ros.node.topic.Subscriber;
-
-/**
- * This node is used to test the slave API externally using rostest.
- * 
- * @author kwc@willowgarage.com (Ken Conley)
- */
-public class SlaveApiTestNode extends AbstractNodeMain {
-
-  @Override
-  public GraphName getDefaultNodeName() {
-    return GraphName.of("rosjava/slave_api_test_node");
-  }
-
-  @Override
-  public void onStart(final ConnectedNode connectedNode) {
-    // Basic chatter in/out test.
-    final Publisher<std_msgs.String> pub_string =
-        connectedNode.newPublisher("chatter_out", std_msgs.String._TYPE);
-    MessageListener<std_msgs.String> chatter_cb = new MessageListener<std_msgs.String>() {
-      @Override
-      public void onNewMessage(std_msgs.String m) {
-        System.out.println("String: " + m.getData());
-      }
-    };
-
-    Subscriber<std_msgs.String> stringSubscriber =
-        connectedNode.newSubscriber("chatter_in", std_msgs.String._TYPE);
-    stringSubscriber.addMessageListener(chatter_cb);
-
-    // Have at least one case of dual pub/sub on the same topic.
-    final Publisher<std_msgs.Int64> pub_int64_pubsub =
-        connectedNode.newPublisher("int64", std_msgs.Int64._TYPE);
-    MessageListener<std_msgs.Int64> int64_cb = new MessageListener<std_msgs.Int64>() {
-      @Override
-      public void onNewMessage(std_msgs.Int64 m) {
-      }
-    };
-
-    Subscriber<std_msgs.Int64> int64Subscriber =
-        connectedNode.newSubscriber("int64", "std_msgs/std_msgs.Int64");
-    int64Subscriber.addMessageListener(int64_cb);
-
-    // Don't do any performance optimizations here. We want to make sure that
-    // GC, etc. is working.
-    connectedNode.executeCancellableLoop(new CancellableLoop() {
-      @Override
-      protected void loop() throws InterruptedException {
-        MessageFactory topicMessageFactory = connectedNode.getTopicMessageFactory();
-        std_msgs.String chatter = topicMessageFactory.newFromType(std_msgs.String._TYPE);
-        chatter.setData("hello " + System.currentTimeMillis());
-        pub_string.publish(chatter);
-
-        std_msgs.Int64 num = topicMessageFactory.newFromType(std_msgs.Int64._TYPE);
-        num.setData(1);
-        pub_int64_pubsub.publish(num);
-        Thread.sleep(100);
-      }
-    });
-  }
-}
diff --git a/rosjava_tutorial_pubsub/BUILD.bazel b/rosjava_tutorial_pubsub/BUILD.bazel
deleted file mode 100644
index 40acec59..00000000
--- a/rosjava_tutorial_pubsub/BUILD.bazel
+++ /dev/null
@@ -1,13 +0,0 @@
-java_binary(
-    name = "rosjava_tutorial_pubsub",
-    srcs = glob([
-        "src/main/**/*.java",
-    ]),
-    main_class = "org.ros.RosRun",
-    deps = [
-        "//3rdparty/jvm/org/apache/commons:com_springsource_org_apache_commons_logging",
-        "//3rdparty/jvm/org/ros/rosjava_messages:std_msgs",
-        "//rosjava",
-        "@com_github_rosjava_rosjava_bootstrap//message_generation",
-    ],
-)
diff --git a/rosjava_tutorial_pubsub/build.gradle b/rosjava_tutorial_pubsub/build.gradle
deleted file mode 100644
index 11c866cf..00000000
--- a/rosjava_tutorial_pubsub/build.gradle
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-
-apply plugin: 'application'
-
-mainClassName = 'org.ros.RosRun'
-
-dependencies {
-  compile project(':rosjava')
-}
-
-defaultTasks 'publish', 'installDist'
-
diff --git a/rosjava_tutorial_pubsub/src/main/java/org/ros/rosjava_tutorial_pubsub/Listener.java b/rosjava_tutorial_pubsub/src/main/java/org/ros/rosjava_tutorial_pubsub/Listener.java
deleted file mode 100644
index 2725c40c..00000000
--- a/rosjava_tutorial_pubsub/src/main/java/org/ros/rosjava_tutorial_pubsub/Listener.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- * 
- * 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.
- */
-
-package org.ros.rosjava_tutorial_pubsub;
-
-import org.apache.commons.logging.Log;
-import org.ros.message.MessageListener;
-import org.ros.namespace.GraphName;
-import org.ros.node.AbstractNodeMain;
-import org.ros.node.ConnectedNode;
-import org.ros.node.NodeMain;
-import org.ros.node.topic.Subscriber;
-
-/**
- * A simple {@link Subscriber} {@link NodeMain}.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class Listener extends AbstractNodeMain {
-
-  @Override
-  public GraphName getDefaultNodeName() {
-    return GraphName.of("rosjava_tutorial_pubsub/listener");
-  }
-
-  @Override
-  public void onStart(ConnectedNode connectedNode) {
-    final Log log = connectedNode.getLog();
-    Subscriber<std_msgs.String> subscriber = connectedNode.newSubscriber("chatter", std_msgs.String._TYPE);
-    subscriber.addMessageListener(new MessageListener<std_msgs.String>() {
-      @Override
-      public void onNewMessage(std_msgs.String message) {
-        log.info("I heard: \"" + message.getData() + "\"");
-      }
-    });
-  }
-}
diff --git a/rosjava_tutorial_pubsub/src/main/java/org/ros/rosjava_tutorial_pubsub/Talker.java b/rosjava_tutorial_pubsub/src/main/java/org/ros/rosjava_tutorial_pubsub/Talker.java
deleted file mode 100644
index 645d6ebc..00000000
--- a/rosjava_tutorial_pubsub/src/main/java/org/ros/rosjava_tutorial_pubsub/Talker.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- * 
- * 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.
- */
-
-package org.ros.rosjava_tutorial_pubsub;
-
-import org.ros.concurrent.CancellableLoop;
-import org.ros.namespace.GraphName;
-import org.ros.node.AbstractNodeMain;
-import org.ros.node.ConnectedNode;
-import org.ros.node.NodeMain;
-import org.ros.node.topic.Publisher;
-
-/**
- * A simple {@link Publisher} {@link NodeMain}.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class Talker extends AbstractNodeMain {
-  private String topic_name;
-
-  public Talker() {
-    topic_name = "chatter";
-  }
-
-  public Talker(String topic)
-  {
-    topic_name = topic;
-  }
-
-  @Override
-  public GraphName getDefaultNodeName() {
-    return GraphName.of("rosjava_tutorial_pubsub/talker");
-  }
-
-  @Override
-  public void onStart(final ConnectedNode connectedNode) {
-    final Publisher<std_msgs.String> publisher =
-        connectedNode.newPublisher(topic_name, std_msgs.String._TYPE);
-    // This CancellableLoop will be canceled automatically when the node shuts
-    // down.
-    connectedNode.executeCancellableLoop(new CancellableLoop() {
-      private int sequenceNumber;
-
-      @Override
-      protected void setup() {
-        sequenceNumber = 0;
-      }
-
-      @Override
-      protected void loop() throws InterruptedException {
-        std_msgs.String str = publisher.newMessage();
-        str.setData("Hello world! " + sequenceNumber);
-        publisher.publish(str);
-        sequenceNumber++;
-        Thread.sleep(1000);
-      }
-    });
-  }
-}
diff --git a/rosjava_tutorial_right_hand_rule/build.gradle b/rosjava_tutorial_right_hand_rule/build.gradle
deleted file mode 100644
index c48db936..00000000
--- a/rosjava_tutorial_right_hand_rule/build.gradle
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-
-apply plugin: 'application'
-
-mainClassName = 'org.ros.RosRun'
-
-dependencies {
-  compile project(':rosjava')
-  compile 'org.ros.rosjava_messages:sensor_msgs:[1.12,1.13)'
-}
-
diff --git a/rosjava_tutorial_right_hand_rule/src/main/java/org/ros/rosjava_tutorial_right_hand_rule/RightHandRule.java b/rosjava_tutorial_right_hand_rule/src/main/java/org/ros/rosjava_tutorial_right_hand_rule/RightHandRule.java
deleted file mode 100644
index 1bafae60..00000000
--- a/rosjava_tutorial_right_hand_rule/src/main/java/org/ros/rosjava_tutorial_right_hand_rule/RightHandRule.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- * 
- * 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.
- */
-
-package org.ros.rosjava_tutorial_right_hand_rule;
-
-import org.ros.message.MessageListener;
-import org.ros.namespace.GraphName;
-import org.ros.node.AbstractNodeMain;
-import org.ros.node.ConnectedNode;
-import org.ros.node.topic.Publisher;
-import org.ros.node.topic.Subscriber;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class RightHandRule extends AbstractNodeMain {
-
-  @Override
-  public GraphName getDefaultNodeName() {
-    return GraphName.of("right_hand_rule");
-  }
-
-  @Override
-  public void onStart(ConnectedNode connectedNode) {
-    final Publisher<geometry_msgs.Twist> publisher =
-        connectedNode.newPublisher("cmd_vel", geometry_msgs.Twist._TYPE);
-    final geometry_msgs.Twist twist = publisher.newMessage();
-    final Subscriber<sensor_msgs.LaserScan> subscriber =
-        connectedNode.newSubscriber("base_scan", sensor_msgs.LaserScan._TYPE);
-    subscriber.addMessageListener(new MessageListener<sensor_msgs.LaserScan>() {
-      @Override
-      public void onNewMessage(sensor_msgs.LaserScan message) {
-        float[] ranges = message.getRanges();
-        float northRange = ranges[ranges.length / 2];
-        float northEastRange = ranges[ranges.length / 3];
-        double linearVelocity = 0.5;
-        double angularVelocity = -0.5;
-        if (northRange < 1. || northEastRange < 1.) {
-          linearVelocity = 0;
-          angularVelocity = 0.5;
-        }
-        twist.getAngular().setZ(angularVelocity);
-        twist.getLinear().setX(linearVelocity);
-        publisher.publish(twist);
-      }
-    });
-  }
-}
diff --git a/rosjava_tutorial_right_hand_rule/world/maze-erratic.world b/rosjava_tutorial_right_hand_rule/world/maze-erratic.world
deleted file mode 100644
index f5b64778..00000000
--- a/rosjava_tutorial_right_hand_rule/world/maze-erratic.world
+++ /dev/null
@@ -1,63 +0,0 @@
-define topurg ranger
-(
-	sensor( 			
-    range [ 0.0  30.0 ]
-    fov 270.25
-   samples 1081
-  )
-
-  # generic model properties
-  color "black"
-  size [ 0.05 0.05 0.1 ]
-)
-
-define erratic position
-(
-  size [0.35 0.35 0.25]
-  origin [-0.05 0 0 0]
-  gui_nose 1
-  drive "diff"
-  topurg(pose [ 0.050 0.000 0 0.000 ])
-)
-
-define floorplan model
-(
-  # sombre, sensible, artistic
-  color "gray30"
-
-  # most maps will need a bounding box
-  boundary 0
-
-  gui_nose 0
-  gui_grid 0
-
-  gui_outline 0
-  gripper_return 0
-  fiducial_return 0
-  laser_return 1
-)
-
-# set the resolution of the underlying raytrace model in meters
-resolution 0.02
-
-interval_sim 100  # simulation timestep in milliseconds
-
-window
-( 
-  size [ 500.0 500.0 ] 
-  rotate [ 0.0 0.0 ]
-  scale 10.0 
-)
-
-# load an environment bitmap
-floorplan
-( 
-  name "maze"
-  bitmap "maze.png"
-  size [50.0 50.0 0.5]
-  pose [ 0.0 0.0 0 0.0 ]
-  gui_move 0
-)
-
-# throw in a robot
-erratic( pose [ 1.25 -25.0 0.0 90.0 ] name "era" color "blue")
diff --git a/rosjava_tutorial_right_hand_rule/world/maze.png b/rosjava_tutorial_right_hand_rule/world/maze.png
deleted file mode 100644
index ed9ab46dce6f7df6ac425089a154b150c5d2dd90..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7098
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
XPJ8>(>Y^?K0|SGntDnm{r-UW|Tau@K

diff --git a/rosjava_tutorial_services/build.gradle b/rosjava_tutorial_services/build.gradle
deleted file mode 100644
index b3c0d175..00000000
--- a/rosjava_tutorial_services/build.gradle
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-
-apply plugin: 'application'
-
-mainClassName = 'org.ros.RosRun'
-
-dependencies {
-  compile project(':rosjava')
-}
diff --git a/rosjava_tutorial_services/src/main/java/org/ros/rosjava_tutorial_services/Client.java b/rosjava_tutorial_services/src/main/java/org/ros/rosjava_tutorial_services/Client.java
deleted file mode 100644
index 1f1e69a6..00000000
--- a/rosjava_tutorial_services/src/main/java/org/ros/rosjava_tutorial_services/Client.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- * 
- * 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.
- */
-
-package org.ros.rosjava_tutorial_services;
-
-import org.ros.exception.RemoteException;
-import org.ros.exception.RosRuntimeException;
-import org.ros.exception.ServiceNotFoundException;
-import org.ros.namespace.GraphName;
-import org.ros.node.AbstractNodeMain;
-import org.ros.node.ConnectedNode;
-import org.ros.node.NodeMain;
-import org.ros.node.service.ServiceClient;
-import org.ros.node.service.ServiceResponseListener;
-
-/**
- * A simple {@link ServiceClient} {@link NodeMain}.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class Client extends AbstractNodeMain {
-
-  @Override
-  public GraphName getDefaultNodeName() {
-    return GraphName.of("rosjava_tutorial_services/client");
-  }
-
-  @Override
-  public void onStart(final ConnectedNode connectedNode) {
-    ServiceClient<rosjava_test_msgs.AddTwoIntsRequest, rosjava_test_msgs.AddTwoIntsResponse> serviceClient;
-    try {
-      serviceClient = connectedNode.newServiceClient("add_two_ints", rosjava_test_msgs.AddTwoInts._TYPE);
-    } catch (ServiceNotFoundException e) {
-      throw new RosRuntimeException(e);
-    }
-    final rosjava_test_msgs.AddTwoIntsRequest request = serviceClient.newMessage();
-    request.setA(2);
-    request.setB(2);
-    serviceClient.call(request, new ServiceResponseListener<rosjava_test_msgs.AddTwoIntsResponse>() {
-      @Override
-      public void onSuccess(rosjava_test_msgs.AddTwoIntsResponse response) {
-        connectedNode.getLog().info(
-            String.format("%d + %d = %d", request.getA(), request.getB(), response.getSum()));
-      }
-
-      @Override
-      public void onFailure(RemoteException e) {
-        throw new RosRuntimeException(e);
-      }
-    });
-  }
-}
diff --git a/rosjava_tutorial_services/src/main/java/org/ros/rosjava_tutorial_services/Server.java b/rosjava_tutorial_services/src/main/java/org/ros/rosjava_tutorial_services/Server.java
deleted file mode 100644
index 5a313bfb..00000000
--- a/rosjava_tutorial_services/src/main/java/org/ros/rosjava_tutorial_services/Server.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- * 
- * 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.
- */
-
-package org.ros.rosjava_tutorial_services;
-
-import org.ros.namespace.GraphName;
-import org.ros.node.AbstractNodeMain;
-import org.ros.node.ConnectedNode;
-import org.ros.node.NodeMain;
-import org.ros.node.service.ServiceResponseBuilder;
-import org.ros.node.service.ServiceServer;
-
-/**
- * This is a simple {@link ServiceServer} {@link NodeMain}.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class Server extends AbstractNodeMain {
-
-  @Override
-  public GraphName getDefaultNodeName() {
-    return GraphName.of("rosjava_tutorial_services/server");
-  }
-
-  @Override
-  public void onStart(ConnectedNode connectedNode) {
-    connectedNode.newServiceServer("add_two_ints", rosjava_test_msgs.AddTwoInts._TYPE,
-        new ServiceResponseBuilder<rosjava_test_msgs.AddTwoIntsRequest, rosjava_test_msgs.AddTwoIntsResponse>() {
-          @Override
-          public void
-              build(rosjava_test_msgs.AddTwoIntsRequest request, rosjava_test_msgs.AddTwoIntsResponse response) {
-            response.setSum(request.getA() + request.getB());
-          }
-        });
-  }
-}
diff --git a/settings.gradle b/settings.gradle
index f86bd0d5..0a8a7f1a 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -19,13 +19,7 @@ include(
     'apache_xmlrpc_common',
     'apache_xmlrpc_server',
     'rosjava',
-    'rosjava_geometry',
-    'rosjava_benchmarks',
-    'rosjava_test',
     'rosjava_helpers',
-    'rosjava_tutorial_pubsub',
-    'rosjava_tutorial_right_hand_rule',
-    'rosjava_tutorial_services',
     'docs',
 )
 
-- 
GitLab