From c3bc3f227d103cece70fd0ef7636f572fedb8232 Mon Sep 17 00:00:00 2001
From: Daniel Stonier <d.stonier@gmail.com>
Date: Wed, 11 Sep 2013 00:09:40 +0900
Subject: [PATCH] started clearing out

---
 CMakeLists.txt                                |   2 +-
 build.gradle                                  |  22 +-
 package.xml                                   |   4 +-
 .../message/DefaultMessageDeserializer.java   |  50 --
 .../message/DefaultMessageFactory.java        |  51 --
 .../DefaultMessageInterfaceClassProvider.java |  55 --
 .../DefaultMessageSerializationFactory.java   |  80 --
 .../message/DefaultMessageSerializer.java     |  36 -
 .../internal/message/GenerateInterfaces.java  | 172 -----
 .../org/ros/internal/message/GetInstance.java |  25 -
 .../ros/internal/message/Md5Generator.java    |  96 ---
 .../org/ros/internal/message/Message.java     |  28 -
 .../internal/message/MessageBufferPool.java   |  91 ---
 .../ros/internal/message/MessageBuffers.java  |  44 --
 .../org/ros/internal/message/MessageImpl.java | 491 ------------
 .../message/MessageInterfaceBuilder.java      | 193 -----
 .../MessageInterfaceClassProvider.java        |  32 -
 .../internal/message/MessageProxyFactory.java |  80 --
 .../MessageProxyInvocationHandler.java        |  51 --
 .../org/ros/internal/message/RawMessage.java  | 207 -----
 .../internal/message/StringFileProvider.java  | 130 ----
 .../message/StringResourceProvider.java       |  73 --
 .../message/context/MessageContext.java       | 144 ----
 .../context/MessageContextBuilder.java        |  85 ---
 .../context/MessageContextProvider.java       |  55 --
 .../MessageDefinitionFileProvider.java        | 114 ---
 .../definition/MessageDefinitionParser.java   | 176 -----
 .../MessageDefinitionProviderChain.java       |  86 ---
 .../MessageDefinitionReflectionProvider.java  |  88 ---
 .../MessageDefinitionTupleParser.java         |  68 --
 .../message/field/BooleanArrayField.java      | 117 ---
 .../message/field/ByteArrayField.java         | 117 ---
 .../message/field/ChannelBufferField.java     | 118 ---
 .../message/field/DoubleArrayField.java       | 117 ---
 .../org/ros/internal/message/field/Field.java | 113 ---
 .../internal/message/field/FieldFactory.java  |  25 -
 .../ros/internal/message/field/FieldType.java |  50 --
 .../message/field/FloatArrayField.java        | 117 ---
 .../message/field/IntegerArrayField.java      | 117 ---
 .../ros/internal/message/field/ListField.java | 115 ---
 .../message/field/LongArrayField.java         | 119 ---
 .../message/field/MessageFieldType.java       | 136 ----
 .../internal/message/field/MessageFields.java | 116 ---
 .../message/field/PrimitiveFieldType.java     | 714 ------------------
 .../message/field/ShortArrayField.java        | 117 ---
 .../internal/message/field/ValueField.java    | 110 ---
 .../ros/internal/message/package-info.java    |  22 -
 .../ServiceDefinitionFileProvider.java        |  51 --
 .../ServiceDefinitionResourceProvider.java    |  69 --
 .../message/service/ServiceDescription.java   |  98 ---
 .../service/ServiceDescriptionFactory.java    |  44 --
 .../service/ServiceRequestMessageFactory.java |  50 --
 ...eRequestMessageInterfaceClassProvider.java |  37 -
 .../ServiceResponseMessageFactory.java        |  50 --
 ...ResponseMessageInterfaceClassProvider.java |  37 -
 .../message/service/package-info.java         |  22 -
 .../topic/TopicDefinitionFileProvider.java    |  51 --
 .../TopicDefinitionResourceProvider.java      |  68 --
 .../message/topic/TopicDescription.java       |  69 --
 .../topic/TopicDescriptionFactory.java        |  44 --
 .../message/topic/TopicMessageFactory.java    |  30 -
 .../internal/message/topic/package-info.java  |  22 -
 .../main/java/org/ros/message/Duration.java   | 167 ----
 .../org/ros/message/MessageDeclaration.java   | 108 ---
 .../message/MessageDefinitionProvider.java    |  50 --
 .../org/ros/message/MessageDeserializer.java  |  31 -
 .../java/org/ros/message/MessageFactory.java  |  30 -
 .../ros/message/MessageFactoryProvider.java   |  24 -
 .../org/ros/message/MessageIdentifier.java    | 121 ---
 .../java/org/ros/message/MessageListener.java |  36 -
 .../message/MessageSerializationFactory.java  |  75 --
 .../org/ros/message/MessageSerializer.java    |  30 -
 .../src/main/java/org/ros/message/Time.java   | 156 ----
 .../java/org/ros/message/package-info.java    |  22 -
 rosjava_messages/build.gradle                 |  38 -
 75 files changed, 9 insertions(+), 6790 deletions(-)
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageDeserializer.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageFactory.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageInterfaceClassProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageSerializationFactory.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageSerializer.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/GenerateInterfaces.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/GetInstance.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/Md5Generator.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/Message.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageBufferPool.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageBuffers.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageImpl.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageInterfaceBuilder.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageInterfaceClassProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageProxyFactory.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageProxyInvocationHandler.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/RawMessage.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/StringFileProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/StringResourceProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/context/MessageContext.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/context/MessageContextBuilder.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/context/MessageContextProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionFileProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionParser.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionProviderChain.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionReflectionProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionTupleParser.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/BooleanArrayField.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ByteArrayField.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ChannelBufferField.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/DoubleArrayField.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/Field.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FieldFactory.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FieldType.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FloatArrayField.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/IntegerArrayField.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ListField.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/LongArrayField.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/MessageFieldType.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/MessageFields.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/PrimitiveFieldType.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ShortArrayField.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ValueField.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/package-info.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDefinitionFileProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDefinitionResourceProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDescription.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDescriptionFactory.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceRequestMessageFactory.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceRequestMessageInterfaceClassProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceResponseMessageFactory.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceResponseMessageInterfaceClassProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/service/package-info.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDefinitionFileProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDefinitionResourceProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDescription.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDescriptionFactory.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicMessageFactory.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/package-info.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/message/Duration.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/message/MessageDeclaration.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/message/MessageDefinitionProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/message/MessageDeserializer.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/message/MessageFactory.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/message/MessageFactoryProvider.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/message/MessageIdentifier.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/message/MessageListener.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/message/MessageSerializationFactory.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/message/MessageSerializer.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/message/Time.java
 delete mode 100644 rosjava_bootstrap/src/main/java/org/ros/message/package-info.java
 delete mode 100644 rosjava_messages/build.gradle

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 35508e35..c93f34b2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,7 +3,7 @@ project(rosjava_core)
 
 find_package(catkin REQUIRED rosjava_tools)
 
-catkin_rosjava_setup()
+catkin_rosjava_setup(uploadArchives)
 
 catkin_package()
 
diff --git a/build.gradle b/build.gradle
index 55f85965..635d6f7c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -19,28 +19,16 @@ task wrapper(type: Wrapper) {
 }
 
 allprojects {
-  group 'ros.rosjava_core'
-  version = '0.0.0-SNAPSHOT'
+  group 'org.ros.rosjava_core'
+  version = '0.1.0'
 }
 
 subprojects {
   if (name != 'docs') {
-    apply plugin: 'java'
-    apply plugin: 'osgi'
-    apply plugin: 'eclipse'
-    apply plugin: 'maven'
-
-    sourceCompatibility = 1.6
-    targetCompatibility = 1.6
-
-    repositories {
-      mavenLocal()
-      maven {
-        url 'https://github.com/rosjava/rosjava_mvn_repo/raw/master'
-      }
-    }
+    apply plugin: 'ros'
+    apply plugin: 'ros-java'
   }
 }
 
-defaultTasks 'install'
+defaultTasks 'uploadArchives'
 
diff --git a/package.xml b/package.xml
index 60c68d15..7ede6d8a 100644
--- a/package.xml
+++ b/package.xml
@@ -10,6 +10,8 @@
   <license>Apache 2.0</license>
 
   <buildtool_depend>catkin</buildtool_depend>
-  <build_depend>rosjava_tools</build_depend>
+  <build_depend>rosjava_build_tools</build_depend>
+  <build_depend>rosjava_bootstrap</build_depend>
+  <build_depend>rosjava_messages</build_depend>
 </package>
 
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageDeserializer.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageDeserializer.java
deleted file mode 100644
index 507f1c9b..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageDeserializer.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.internal.message;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.ros.internal.message.field.Field;
-import org.ros.message.MessageDeserializer;
-import org.ros.message.MessageFactory;
-import org.ros.message.MessageIdentifier;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class DefaultMessageDeserializer<T> implements MessageDeserializer<T> {
-
-  private final MessageIdentifier messageIdentifier;
-  private final MessageFactory messageFactory;
-
-  public DefaultMessageDeserializer(MessageIdentifier messageIdentifier,
-      MessageFactory messageFactory) {
-    this.messageIdentifier = messageIdentifier;
-    this.messageFactory = messageFactory;
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public T deserialize(ChannelBuffer buffer) {
-    Message message = messageFactory.newFromType(messageIdentifier.getType());
-    for (Field field : message.toRawMessage().getFields()) {
-      if (!field.isConstant()) {
-        field.deserialize(buffer);
-      }
-    }
-    return (T) message;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageFactory.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageFactory.java
deleted file mode 100644
index 97d817ea..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageFactory.java
+++ /dev/null
@@ -1,51 +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.internal.message;
-
-import com.google.common.annotations.VisibleForTesting;
-
-import org.ros.message.MessageDeclaration;
-import org.ros.message.MessageDefinitionProvider;
-import org.ros.message.MessageFactory;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class DefaultMessageFactory implements MessageFactory {
-
-  private final MessageDefinitionProvider messageDefinitionProvider;
-  private final DefaultMessageInterfaceClassProvider messageInterfaceClassProvider;
-  private final MessageProxyFactory messageProxyFactory;
-
-  public DefaultMessageFactory(MessageDefinitionProvider messageDefinitionProvider) {
-    this.messageDefinitionProvider = messageDefinitionProvider;
-    messageInterfaceClassProvider = new DefaultMessageInterfaceClassProvider();
-    messageProxyFactory = new MessageProxyFactory(getMessageInterfaceClassProvider(), this);
-  }
-
-  @Override
-  public <T> T newFromType(String messageType) {
-    String messageDefinition = messageDefinitionProvider.get(messageType);
-    MessageDeclaration messageDeclaration = MessageDeclaration.of(messageType, messageDefinition);
-    return messageProxyFactory.newMessageProxy(messageDeclaration);
-  }
-
-  @VisibleForTesting
-  DefaultMessageInterfaceClassProvider getMessageInterfaceClassProvider() {
-    return messageInterfaceClassProvider;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageInterfaceClassProvider.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageInterfaceClassProvider.java
deleted file mode 100644
index 8de583d0..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageInterfaceClassProvider.java
+++ /dev/null
@@ -1,55 +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.internal.message;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.Maps;
-
-import java.util.Map;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class DefaultMessageInterfaceClassProvider implements MessageInterfaceClassProvider {
-
-  private final Map<String, Class<?>> cache;
-
-  public DefaultMessageInterfaceClassProvider() {
-    cache = Maps.newConcurrentMap();
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public <T> Class<T> get(String messageType) {
-    if (cache.containsKey(messageType)) {
-      return (Class<T>) cache.get(messageType);
-    }
-    try {
-      String className = messageType.replace("/", ".");
-      Class<T> messageInterfaceClass = (Class<T>) getClass().getClassLoader().loadClass(className);
-      cache.put(messageType, messageInterfaceClass);
-      return messageInterfaceClass;
-    } catch (ClassNotFoundException e) {
-      return (Class<T>) RawMessage.class;
-    }
-  }
-
-  @VisibleForTesting
-  <T> void add(String messageType, Class<T> messageInterfaceClass) {
-    cache.put(messageType, messageInterfaceClass);
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageSerializationFactory.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageSerializationFactory.java
deleted file mode 100644
index 726b5d84..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageSerializationFactory.java
+++ /dev/null
@@ -1,80 +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.internal.message;
-
-import org.ros.internal.message.service.ServiceRequestMessageFactory;
-import org.ros.internal.message.service.ServiceResponseMessageFactory;
-import org.ros.message.MessageDefinitionProvider;
-import org.ros.message.MessageDeserializer;
-import org.ros.message.MessageFactory;
-import org.ros.message.MessageIdentifier;
-import org.ros.message.MessageSerializationFactory;
-import org.ros.message.MessageSerializer;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class DefaultMessageSerializationFactory implements MessageSerializationFactory {
-
-  private final MessageFactory topicMessageFactory;
-  private final ServiceRequestMessageFactory serviceRequestMessageFactory;
-  private final ServiceResponseMessageFactory serviceResponseMessageFactory;
-
-  public DefaultMessageSerializationFactory(MessageDefinitionProvider messageDefinitionProvider) {
-    topicMessageFactory = new DefaultMessageFactory(messageDefinitionProvider);
-    serviceRequestMessageFactory = new ServiceRequestMessageFactory(messageDefinitionProvider);
-    serviceResponseMessageFactory = new ServiceResponseMessageFactory(messageDefinitionProvider);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public <T> MessageSerializer<T> newMessageSerializer(String messageType) {
-    return (MessageSerializer<T>) new DefaultMessageSerializer();
-  }
-
-  @Override
-  public <T> MessageDeserializer<T> newMessageDeserializer(String messageType) {
-    return new DefaultMessageDeserializer<T>(MessageIdentifier.of(messageType),
-        topicMessageFactory);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public <T> MessageSerializer<T> newServiceRequestSerializer(String serviceType) {
-    return (MessageSerializer<T>) new DefaultMessageSerializer();
-  }
-
-  @Override
-  public <T> org.ros.message.MessageDeserializer<T>
-      newServiceRequestDeserializer(String serviceType) {
-    return new DefaultMessageDeserializer<T>(MessageIdentifier.of(serviceType),
-        serviceRequestMessageFactory);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public <T> org.ros.message.MessageSerializer<T> newServiceResponseSerializer(String serviceType) {
-    return (MessageSerializer<T>) new DefaultMessageSerializer();
-  }
-
-  @Override
-  public <T> org.ros.message.MessageDeserializer<T> newServiceResponseDeserializer(
-      String serviceType) {
-    return new DefaultMessageDeserializer<T>(MessageIdentifier.of(serviceType),
-        serviceResponseMessageFactory);
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageSerializer.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageSerializer.java
deleted file mode 100644
index a71a597c..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/DefaultMessageSerializer.java
+++ /dev/null
@@ -1,36 +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.internal.message;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.ros.internal.message.field.Field;
-import org.ros.message.MessageSerializer;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class DefaultMessageSerializer implements MessageSerializer<Message> {
-
-  @Override
-  public void serialize(Message message, ChannelBuffer buffer) {
-    for (Field field : message.toRawMessage().getFields()) {
-      if (!field.isConstant()) {
-        field.serialize(buffer);
-      }
-    }
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/GenerateInterfaces.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/GenerateInterfaces.java
deleted file mode 100644
index 039f5e73..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/GenerateInterfaces.java
+++ /dev/null
@@ -1,172 +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.internal.message;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-
-import org.apache.commons.io.FileUtils;
-import org.ros.EnvironmentVariables;
-import org.ros.exception.RosRuntimeException;
-import org.ros.internal.message.definition.MessageDefinitionProviderChain;
-import org.ros.internal.message.definition.MessageDefinitionTupleParser;
-import org.ros.internal.message.service.ServiceDefinitionFileProvider;
-import org.ros.internal.message.topic.TopicDefinitionFileProvider;
-import org.ros.message.MessageDeclaration;
-import org.ros.message.MessageFactory;
-import org.ros.message.MessageIdentifier;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class GenerateInterfaces {
-
-  private final TopicDefinitionFileProvider topicDefinitionFileProvider;
-  private final ServiceDefinitionFileProvider serviceDefinitionFileProvider;
-  private final MessageDefinitionProviderChain messageDefinitionProviderChain;
-  private final MessageFactory messageFactory;
-
-  public GenerateInterfaces() {
-    messageDefinitionProviderChain = new MessageDefinitionProviderChain();
-    topicDefinitionFileProvider = new TopicDefinitionFileProvider();
-    messageDefinitionProviderChain.addMessageDefinitionProvider(topicDefinitionFileProvider);
-    serviceDefinitionFileProvider = new ServiceDefinitionFileProvider();
-    messageDefinitionProviderChain.addMessageDefinitionProvider(serviceDefinitionFileProvider);
-    messageFactory = new DefaultMessageFactory(messageDefinitionProviderChain);
-  }
-
-  /**
-   * @param packages
-   *          a list of packages containing the topic types to generate
-   *          interfaces for
-   * @param outputDirectory
-   *          the directory to write the generated interfaces to
-   * @throws IOException
-   */
-  private void writeTopicInterfaces(File outputDirectory, Collection<String> packages)
-      throws IOException {
-    Collection<MessageIdentifier> topicTypes = Sets.newHashSet();
-    if (packages.size() == 0) {
-      packages = topicDefinitionFileProvider.getPackages();
-    }
-    for (String pkg : packages) {
-      Collection<MessageIdentifier> messageIdentifiers =
-          topicDefinitionFileProvider.getMessageIdentifiersByPackage(pkg);
-      if (messageIdentifiers != null) {
-        topicTypes.addAll(messageIdentifiers);
-      }
-    }
-    for (MessageIdentifier topicType : topicTypes) {
-      String definition = messageDefinitionProviderChain.get(topicType.getType());
-      MessageDeclaration messageDeclaration = new MessageDeclaration(topicType, definition);
-      writeInterface(messageDeclaration, outputDirectory, true);
-    }
-  }
-
-  /**
-   * @param packages
-   *          a list of packages containing the topic types to generate
-   *          interfaces for
-   * @param outputDirectory
-   *          the directory to write the generated interfaces to
-   * @throws IOException
-   */
-  private void writeServiceInterfaces(File outputDirectory, Collection<String> packages)
-      throws IOException {
-    Collection<MessageIdentifier> serviceTypes = Sets.newHashSet();
-    if (packages.size() == 0) {
-      packages = serviceDefinitionFileProvider.getPackages();
-    }
-    for (String pkg : packages) {
-      Collection<MessageIdentifier> messageIdentifiers =
-          serviceDefinitionFileProvider.getMessageIdentifiersByPackage(pkg);
-      if (messageIdentifiers != null) {
-        serviceTypes.addAll(messageIdentifiers);
-      }
-    }
-    for (MessageIdentifier serviceType : serviceTypes) {
-      String definition = messageDefinitionProviderChain.get(serviceType.getType());
-      MessageDeclaration serviceDeclaration =
-          MessageDeclaration.of(serviceType.getType(), definition);
-      writeInterface(serviceDeclaration, outputDirectory, false);
-      List<String> requestAndResponse = MessageDefinitionTupleParser.parse(definition, 2);
-      MessageDeclaration requestDeclaration =
-          MessageDeclaration.of(serviceType.getType() + "Request", requestAndResponse.get(0));
-      MessageDeclaration responseDeclaration =
-          MessageDeclaration.of(serviceType.getType() + "Response", requestAndResponse.get(1));
-      writeInterface(requestDeclaration, outputDirectory, true);
-      writeInterface(responseDeclaration, outputDirectory, true);
-    }
-  }
-
-  private void writeInterface(MessageDeclaration messageDeclaration, File outputDirectory,
-      boolean addConstantsAndMethods) {
-    MessageInterfaceBuilder builder = new MessageInterfaceBuilder();
-    builder.setPackageName(messageDeclaration.getPackage());
-    builder.setInterfaceName(messageDeclaration.getName());
-    builder.setMessageDeclaration(messageDeclaration);
-    builder.setAddConstantsAndMethods(addConstantsAndMethods);
-    try {
-      String content;
-      content = builder.build(messageFactory);
-      File file = new File(outputDirectory, messageDeclaration.getType() + ".java");
-      FileUtils.writeStringToFile(file, content);
-    } catch (Exception e) {
-      System.out.printf("Failed to generate interface for %s.\n", messageDeclaration.getType());
-      e.printStackTrace();
-    }
-  }
-
-  public void generate(File outputDirectory, Collection<String> packages,
-      Collection<File> packagePath) {
-    for (File directory : packagePath) {
-      topicDefinitionFileProvider.addDirectory(directory);
-      serviceDefinitionFileProvider.addDirectory(directory);
-    }
-    topicDefinitionFileProvider.update();
-    serviceDefinitionFileProvider.update();
-    try {
-      writeTopicInterfaces(outputDirectory, packages);
-      writeServiceInterfaces(outputDirectory, packages);
-    } catch (IOException e) {
-      throw new RosRuntimeException(e);
-    }
-  }
-
-  public static void main(String[] args) {
-    List<String> arguments = Lists.newArrayList(args);
-    if (arguments.size() == 0) {
-      arguments.add(".");
-    }
-    String rosPackagePath = System.getenv(EnvironmentVariables.ROS_PACKAGE_PATH);
-    Collection<File> packagePath = Lists.newArrayList();
-    for (String path : rosPackagePath.split(File.pathSeparator)) {
-      File packageDirectory = new File(path);
-      if (packageDirectory.exists()) {
-        packagePath.add(packageDirectory);
-      }
-    }
-    GenerateInterfaces generateInterfaces = new GenerateInterfaces();
-    File outputDirectory = new File(arguments.remove(0));
-    generateInterfaces.generate(outputDirectory, arguments, packagePath);
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/GetInstance.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/GetInstance.java
deleted file mode 100644
index 5916b946..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/GetInstance.java
+++ /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.
- */
-
-package org.ros.internal.message;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-interface GetInstance {
-
-  public Object getInstance();
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/Md5Generator.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/Md5Generator.java
deleted file mode 100644
index 0e78b799..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/Md5Generator.java
+++ /dev/null
@@ -1,96 +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.internal.message;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-
-import org.ros.internal.message.definition.MessageDefinitionParser;
-import org.ros.internal.message.definition.MessageDefinitionTupleParser;
-import org.ros.internal.message.definition.MessageDefinitionParser.MessageDefinitionVisitor;
-
-import org.apache.commons.codec.digest.DigestUtils;
-import org.ros.internal.message.field.PrimitiveFieldType;
-import org.ros.message.MessageDefinitionProvider;
-
-import java.util.List;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class Md5Generator {
-
-  private final MessageDefinitionProvider messageDefinitionProvider;
-
-  public Md5Generator(MessageDefinitionProvider messageDefinitionProvider) {
-    this.messageDefinitionProvider = messageDefinitionProvider;
-  }
-
-  public String generate(String messageType) {
-    String messageDefinition = messageDefinitionProvider.get(messageType);
-    Preconditions.checkNotNull(messageDefinition, "No definition for message type: " + messageType);
-    List<String> parts = MessageDefinitionTupleParser.parse(messageDefinition, -1);
-    StringBuilder text = new StringBuilder();
-    for (String part : parts) {
-      text.append(generateText(messageType, part));
-    }
-    return DigestUtils.md5Hex(text.toString());
-  }
-
-  private String generateText(String messageType, String messageDefinition) {
-    final List<String> constants = Lists.newArrayList();
-    final List<String> variables = Lists.newArrayList();
-    MessageDefinitionVisitor visitor = new MessageDefinitionVisitor() {
-      @Override
-      public void variableValue(String type, String name) {
-        if (!PrimitiveFieldType.existsFor(type)) {
-          type = generate(type);
-        }
-        variables.add(String.format("%s %s\n", type, name));
-      }
-
-      @Override
-      public void variableList(String type, int size, String name) {
-        if (!PrimitiveFieldType.existsFor(type)) {
-          String md5Checksum = generate(type);
-          variables.add(String.format("%s %s\n", md5Checksum, name));
-        } else {
-          if (size != -1) {
-            variables.add(String.format("%s[%d] %s\n", type, size, name));
-          } else {
-            variables.add(String.format("%s[] %s\n", type, name));
-          }
-        }
-      }
-
-      @Override
-      public void constantValue(String type, String name, String value) {
-        constants.add(String.format("%s %s=%s\n", type, name, value));
-      }
-    };
-    MessageDefinitionParser messageDefinitionParser = new MessageDefinitionParser(visitor);
-    messageDefinitionParser.parse(messageType, messageDefinition);
-    String text = "";
-    for (String constant : constants) {
-      text += constant;
-    }
-    for (String variable : variables) {
-      text += variable;
-    }
-    return text.trim();
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/Message.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/Message.java
deleted file mode 100644
index 055db829..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/Message.java
+++ /dev/null
@@ -1,28 +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.internal.message;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public interface Message {
-
-  /**
-   * @return returns this {@link Message} as a {@link RawMessage}
-   */
-  RawMessage toRawMessage();
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageBufferPool.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageBufferPool.java
deleted file mode 100644
index 4541596b..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageBufferPool.java
+++ /dev/null
@@ -1,91 +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.internal.message;
-
-import org.apache.commons.pool.ObjectPool;
-import org.apache.commons.pool.PoolableObjectFactory;
-import org.apache.commons.pool.impl.StackObjectPool;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.ros.exception.RosRuntimeException;
-
-/**
- * A pool of {@link ChannelBuffer}s for serializing and deserializing messages.
- * <p>
- * By contract, {@link ChannelBuffer}s provided by {@link #acquire()} must be
- * returned using {@link #release(ChannelBuffer)}.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageBufferPool {
-
-  private final ObjectPool<ChannelBuffer> pool;
-
-  public MessageBufferPool() {
-    pool = new StackObjectPool<ChannelBuffer>(new PoolableObjectFactory<ChannelBuffer>() {
-      @Override
-      public ChannelBuffer makeObject() throws Exception {
-        return MessageBuffers.dynamicBuffer();
-      }
-
-      @Override
-      public void destroyObject(ChannelBuffer channelBuffer) throws Exception {
-      }
-
-      @Override
-      public boolean validateObject(ChannelBuffer channelBuffer) {
-        return true;
-      }
-
-      @Override
-      public void activateObject(ChannelBuffer channelBuffer) throws Exception {
-      }
-
-      @Override
-      public void passivateObject(ChannelBuffer channelBuffer) throws Exception {
-        channelBuffer.clear();
-      }
-    });
-  }
-
-  /**
-   * Acquired {@link ChannelBuffer}s must be returned using
-   * {@link #release(ChannelBuffer)}.
-   * 
-   * @return an unused {@link ChannelBuffer}
-   */
-  public ChannelBuffer acquire() {
-    try {
-      return pool.borrowObject();
-    } catch (Exception e) {
-      throw new RosRuntimeException(e);
-    }
-  }
-
-  /**
-   * Release a previously acquired {@link ChannelBuffer}.
-   * 
-   * @param channelBuffer
-   *          the {@link ChannelBuffer} to release
-   */
-  public void release(ChannelBuffer channelBuffer) {
-    try {
-      pool.returnObject(channelBuffer);
-    } catch (Exception e) {
-      throw new RosRuntimeException(e);
-    }
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageBuffers.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageBuffers.java
deleted file mode 100644
index a5934ec8..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageBuffers.java
+++ /dev/null
@@ -1,44 +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.internal.message;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
-
-import java.nio.ByteOrder;
-
-/**
- * Provides {@link ChannelBuffer}s for serializing and deserializing messages.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageBuffers {
-
-  static final int ESTIMATED_LENGTH = 256;
-
-  private MessageBuffers() {
-    // Utility class.
-  }
-
-  /**
-   * @return a new {@link ChannelBuffer} for {@link Message} serialization that
-   *         grows dynamically
-   */
-  public static ChannelBuffer dynamicBuffer() {
-    return ChannelBuffers.dynamicBuffer(ByteOrder.LITTLE_ENDIAN, ESTIMATED_LENGTH);
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageImpl.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageImpl.java
deleted file mode 100644
index 5f18d7f1..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageImpl.java
+++ /dev/null
@@ -1,491 +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.internal.message;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.ros.exception.RosRuntimeException;
-import org.ros.internal.message.context.MessageContext;
-import org.ros.internal.message.field.Field;
-import org.ros.internal.message.field.MessageFieldType;
-import org.ros.internal.message.field.MessageFields;
-import org.ros.message.Duration;
-import org.ros.message.MessageIdentifier;
-import org.ros.message.Time;
-
-import java.util.List;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-class MessageImpl implements RawMessage, GetInstance {
-
-  private final MessageContext messageContext;
-  private final MessageFields messageFields;
-
-  public MessageImpl(MessageContext messageContext) {
-    this.messageContext = messageContext;
-    messageFields = new MessageFields(messageContext);
-  }
-
-  public MessageContext getMessageContext() {
-    return messageContext;
-  }
-
-  public MessageFields getMessageFields() {
-    return messageFields;
-  }
-
-  @Override
-  public RawMessage toRawMessage() {
-    return (RawMessage) this;
-  }
-
-  @Override
-  public MessageIdentifier getIdentifier() {
-    return messageContext.getMessageIdentifer();
-  }
-
-  @Override
-  public String getType() {
-    return messageContext.getType();
-  }
-
-  @Override
-  public String getPackage() {
-    return messageContext.getPackage();
-  }
-
-  @Override
-  public String getName() {
-    return messageContext.getName();
-  }
-
-  @Override
-  public String getDefinition() {
-    return messageContext.getDefinition();
-  }
-
-  @Override
-  public List<Field> getFields() {
-    return messageFields.getFields();
-  }
-
-  @Override
-  public boolean getBool(String name) {
-    return (Boolean) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public boolean[] getBoolArray(String name) {
-    return (boolean[]) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public Duration getDuration(String name) {
-    return (Duration) messageFields.getFieldValue(name);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public List<Duration> getDurationList(String name) {
-    return (List<Duration>) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public float getFloat32(String name) {
-    return (Float) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public float[] getFloat32Array(String name) {
-    return (float[]) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public double getFloat64(String name) {
-    return (Double) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public double[] getFloat64Array(String name) {
-    return (double[]) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public short getInt16(String name) {
-    return (Short) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public short[] getInt16Array(String name) {
-    return (short[]) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public int getInt32(String name) {
-    return (Integer) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public int[] getInt32Array(String name) {
-    return (int[]) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public long getInt64(String name) {
-    return (Long) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public long[] getInt64Array(String name) {
-    return (long[]) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public byte getInt8(String name) {
-    return (Byte) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public byte[] getInt8Array(String name) {
-    return (byte[]) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public <T extends Message> T getMessage(String name) {
-    if (messageFields.getField(name).getType() instanceof MessageFieldType) {
-      return messageFields.getField(name).<T>getValue();
-    }
-    throw new RosRuntimeException("Failed to access message field: " + name);
-  }
-
-  @Override
-  public <T extends Message> List<T> getMessageList(String name) {
-    if (messageFields.getField(name).getType() instanceof MessageFieldType) {
-      return messageFields.getField(name).<List<T>>getValue();
-    }
-    throw new RosRuntimeException("Failed to access list field: " + name);
-  }
-
-  @Override
-  public String getString(String name) {
-    return (String) messageFields.getFieldValue(name);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public List<String> getStringList(String name) {
-    return (List<String>) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public Time getTime(String name) {
-    return (Time) messageFields.getFieldValue(name);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public List<Time> getTimeList(String name) {
-    return (List<Time>) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public short getUInt16(String name) {
-    return (Short) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public short[] getUInt16Array(String name) {
-    return (short[]) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public int getUInt32(String name) {
-    return (Integer) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public int[] getUInt32Array(String name) {
-    return (int[]) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public long getUInt64(String name) {
-    return (Long) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public long[] getUInt64Array(String name) {
-    return (long[]) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public short getUInt8(String name) {
-    return (Short) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public short[] getUInt8Array(String name) {
-    return (short[]) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public void setBool(String name, boolean value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setBoolArray(String name, boolean[] value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setDurationList(String name, List<Duration> value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setDuration(String name, Duration value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setFloat32(String name, float value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setFloat32Array(String name, float[] value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setFloat64(String name, double value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setFloat64Array(String name, double[] value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setInt16(String name, short value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setInt16Array(String name, short[] value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setInt32(String name, int value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setInt32Array(String name, int[] value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setInt64(String name, long value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setInt64Array(String name, long[] value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setInt8(String name, byte value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setInt8Array(String name, byte[] value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setMessage(String name, Message value) {
-    // TODO(damonkohler): Verify the type of the provided Message?
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setMessageList(String name, List<Message> value) {
-    // TODO(damonkohler): Verify the type of all Messages in the provided list?
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setString(String name, String value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setStringList(String name, List<String> value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setTime(String name, Time value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setTimeList(String name, List<Time> value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setUInt16(String name, short value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setUInt16Array(String name, short[] value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setUInt32(String name, int value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setUInt32Array(String name, int[] value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setUInt64(String name, long value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setUInt64Array(String name, long[] value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setUInt8(String name, byte value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setUInt8Array(String name, byte[] value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public byte getByte(String name) {
-    return (Byte) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public short getChar(String name) {
-    return (Short) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public void setByte(String name, byte value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setChar(String name, short value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setByteArray(String name, byte[] value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public void setCharArray(String name, short[] value) {
-    messageFields.setFieldValue(name, value);
-  }
-
-  @Override
-  public byte[] getByteArray(String name) {
-    return (byte[]) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public short[] getCharArray(String name) {
-    return (short[]) messageFields.getFieldValue(name);
-  }
-  
-  @Override
-  public ChannelBuffer getChannelBuffer(String name) {
-    return (ChannelBuffer) messageFields.getFieldValue(name);
-  }
-
-  @Override
-  public void setChannelBuffer(String name, ChannelBuffer value) {
-    messageFields.setFieldValue(name, value);
-  }
-  
-  @Override
-  public Object getInstance() {
-    return this;
-  }
-
-  @Override
-  public String toString() {
-    return String.format("MessageImpl<%s>", getType());
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = 1;
-    result = prime * result + ((messageContext == null) ? 0 : messageContext.hashCode());
-    result = prime * result + ((messageFields == null) ? 0 : messageFields.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (obj == null)
-      return false;
-    if (!(obj instanceof GetInstance))
-      return false;
-    obj = ((GetInstance) obj).getInstance();
-    if (getClass() != obj.getClass())
-      return false;
-    MessageImpl other = (MessageImpl) obj;
-    if (messageContext == null) {
-      if (other.messageContext != null)
-        return false;
-    } else if (!messageContext.equals(other.messageContext))
-      return false;
-    if (messageFields == null) {
-      if (other.messageFields != null)
-        return false;
-    } else if (!messageFields.equals(other.messageFields))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageInterfaceBuilder.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageInterfaceBuilder.java
deleted file mode 100644
index 2247a457..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageInterfaceBuilder.java
+++ /dev/null
@@ -1,193 +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.internal.message;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Sets;
-
-import org.apache.commons.lang.StringEscapeUtils;
-import org.ros.exception.RosRuntimeException;
-import org.ros.internal.message.context.MessageContext;
-import org.ros.internal.message.context.MessageContextProvider;
-import org.ros.internal.message.field.Field;
-import org.ros.internal.message.field.FieldType;
-import org.ros.internal.message.field.MessageFields;
-import org.ros.internal.message.field.PrimitiveFieldType;
-import org.ros.message.MessageDeclaration;
-import org.ros.message.MessageFactory;
-
-import java.util.Set;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageInterfaceBuilder {
-
-  private MessageDeclaration messageDeclaration;
-  private String packageName;
-  private String interfaceName;
-  private boolean addConstantsAndMethods;
-  private String nestedContent;
-
-  // TODO(damonkohler): Upgrade Apache Commons Lang. See
-  // https://issues.apache.org/jira/browse/LANG-437
-  private static String escapeJava(String str) {
-    return StringEscapeUtils.escapeJava(str).replace("\\/", "/").replace("'", "\\'");
-  }
-
-  public MessageDeclaration getMessageDeclaration() {
-    return messageDeclaration;
-  }
-
-  public MessageInterfaceBuilder setMessageDeclaration(MessageDeclaration messageDeclaration) {
-    Preconditions.checkNotNull(messageDeclaration);
-    this.messageDeclaration = messageDeclaration;
-    return this;
-  }
-
-  public String getPackageName() {
-    return packageName;
-  }
-
-  /**
-   * @param packageName
-   *          the package name of the interface or {@code null} if no package
-   *          name should be specified
-   * @return this {@link MessageInterfaceBuilder}
-   */
-  public MessageInterfaceBuilder setPackageName(String packageName) {
-    this.packageName = packageName;
-    return this;
-  }
-
-  public String getInterfaceName() {
-    return interfaceName;
-  }
-
-  public MessageInterfaceBuilder setInterfaceName(String interfaceName) {
-    Preconditions.checkNotNull(interfaceName);
-    this.interfaceName = interfaceName;
-    return this;
-  }
-
-  public boolean getAddConstantsAndMethods() {
-    return addConstantsAndMethods;
-  }
-
-  public void setAddConstantsAndMethods(boolean enabled) {
-    addConstantsAndMethods = enabled;
-  }
-
-  public String getNestedContent() {
-    return nestedContent;
-  }
-
-  public void setNestedContent(String nestedContent) {
-    this.nestedContent = nestedContent;
-  }
-
-  public String build(MessageFactory messageFactory) {
-    Preconditions.checkNotNull(messageDeclaration);
-    Preconditions.checkNotNull(interfaceName);
-    StringBuilder builder = new StringBuilder();
-    if (packageName != null) {
-      builder.append(String.format("package %s;\n\n", packageName));
-    }
-    builder.append(String.format(
-        "public interface %s extends org.ros.internal.message.Message {\n", interfaceName));
-    builder.append(String.format("  static final java.lang.String _TYPE = \"%s\";\n",
-        messageDeclaration.getType()));
-    builder.append(String.format("  static final java.lang.String _DEFINITION = \"%s\";\n",
-        escapeJava(messageDeclaration.getDefinition())));
-    if (addConstantsAndMethods) {
-      MessageContextProvider messageContextProvider = new MessageContextProvider(messageFactory);
-      MessageContext messageContext = messageContextProvider.get(messageDeclaration);
-      appendConstants(messageContext, builder);
-      appendSettersAndGetters(messageContext, builder);
-    }
-    if (nestedContent != null) {
-      builder.append("\n");
-      builder.append(nestedContent);
-    }
-    builder.append("}\n");
-    return builder.toString();
-  }
-
-  @SuppressWarnings("deprecation")
-  private String getJavaValue(PrimitiveFieldType primitiveFieldType, String value) {
-    switch (primitiveFieldType) {
-      case BOOL:
-        return Boolean.valueOf(!value.equals("0") && !value.equals("false")).toString();
-      case FLOAT32:
-        return value + "f";
-      case STRING:
-        return "\"" + escapeJava(value) + "\"";
-      case BYTE:
-      case CHAR:
-      case INT8:
-      case UINT8:
-      case INT16:
-      case UINT16:
-      case INT32:
-      case UINT32:
-      case INT64:
-      case UINT64:
-      case FLOAT64:
-        return value;
-      default:
-        throw new RosRuntimeException("Unsupported PrimitiveFieldType: " + primitiveFieldType);
-    }
-  }
-
-  private void appendConstants(MessageContext messageContext, StringBuilder builder) {
-    MessageFields messageFields = new MessageFields(messageContext);
-    for (Field field : messageFields.getFields()) {
-      if (field.isConstant()) {
-        Preconditions.checkState(field.getType() instanceof PrimitiveFieldType);
-        // We use FieldType and cast back to PrimitiveFieldType below to avoid a
-        // bug in the Sun JDK: http://gs.sun.com/view_bug.do?bug_id=6522780
-        FieldType fieldType = (FieldType) field.getType();
-        String value = getJavaValue((PrimitiveFieldType) fieldType, field.getValue().toString());
-        builder.append(String.format("  static final %s %s = %s;\n", fieldType.getJavaTypeName(),
-            field.getName(), value));
-      }
-    }
-  }
-
-  private void appendSettersAndGetters(MessageContext messageContext, StringBuilder builder) {
-    MessageFields messageFields = new MessageFields(messageContext);
-    Set<String> getters = Sets.newHashSet();
-    for (Field field : messageFields.getFields()) {
-      if (field.isConstant()) {
-        continue;
-      }
-      String type = field.getJavaTypeName();
-      String getter = messageContext.getFieldGetterName(field.getName());
-      String setter = messageContext.getFieldSetterName(field.getName());
-      if (getters.contains(getter)) {
-        // In the case that two or more message fields have the same name except
-        // for capitalization, we only generate a getter and setter pair for the
-        // first one. The following fields will only be accessible via the
-        // RawMessage interface.
-        continue;
-      }
-      getters.add(getter);
-      builder.append(String.format("  %s %s();\n", type, getter));
-      builder.append(String.format("  void %s(%s value);\n", setter, type));
-    }
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageInterfaceClassProvider.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageInterfaceClassProvider.java
deleted file mode 100644
index 544c3159..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageInterfaceClassProvider.java
+++ /dev/null
@@ -1,32 +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.internal.message;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public interface MessageInterfaceClassProvider {
-
-  /**
-   * @param <T>
-   *          the message interface class type
-   * @param messageType
-   *          the type of message to provide an interface class for
-   * @return the interface class for the specified message type
-   */
-  <T> Class<T> get(String messageType);
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageProxyFactory.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageProxyFactory.java
deleted file mode 100644
index cc2e7f21..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageProxyFactory.java
+++ /dev/null
@@ -1,80 +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.internal.message;
-
-import com.google.common.base.Preconditions;
-
-import org.ros.internal.message.context.MessageContext;
-import org.ros.internal.message.context.MessageContextProvider;
-import org.ros.message.MessageDeclaration;
-import org.ros.message.MessageFactory;
-
-import java.lang.reflect.Proxy;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageProxyFactory {
-
-  // We can't use the constant here since the rosjava_messages package depends
-  // on rosjava_bootstrap.
-  private static final String HEADER_MESSAGE_TYPE = "std_msgs/Header";
-  private static final String SEQUENCE_FIELD_NAME = "seq";
-  private static final AtomicInteger SEQUENCE_NUMBER = new AtomicInteger(0);
-
-  private final MessageInterfaceClassProvider messageInterfaceClassProvider;
-  private final MessageContextProvider messageContextProvider;
-
-  public MessageProxyFactory(MessageInterfaceClassProvider messageInterfaceClassProvider,
-      MessageFactory messageFactory) {
-    this.messageInterfaceClassProvider = messageInterfaceClassProvider;
-    messageContextProvider = new MessageContextProvider(messageFactory);
-  }
-
-  @SuppressWarnings("unchecked")
-  public <T> T newMessageProxy(MessageDeclaration messageDeclaration) {
-    Preconditions.checkNotNull(messageDeclaration);
-    MessageContext messageContext = messageContextProvider.get(messageDeclaration);
-    MessageImpl messageImpl = new MessageImpl(messageContext);
-    // Header messages are automatically populated with a monotonically
-    // increasing sequence number.
-    if (messageImpl.getType().equals(HEADER_MESSAGE_TYPE)) {
-      messageImpl.setUInt32(SEQUENCE_FIELD_NAME, SEQUENCE_NUMBER.getAndIncrement());
-    }
-    Class<T> messageInterfaceClass =
-        (Class<T>) messageInterfaceClassProvider.get(messageDeclaration.getType());
-    return newProxy(messageInterfaceClass, messageImpl);
-  }
-
-  /**
-   * @param interfaceClass
-   *          the interface class to provide
-   * @param messageImpl
-   *          the instance to proxy
-   * @return a new proxy for {@code implementation} that implements
-   *         {@code interfaceClass}
-   */
-  @SuppressWarnings("unchecked")
-  private <T> T newProxy(Class<T> interfaceClass, final MessageImpl messageImpl) {
-    ClassLoader classLoader = messageImpl.getClass().getClassLoader();
-    Class<?>[] interfaces = new Class<?>[] { interfaceClass, GetInstance.class };
-    MessageProxyInvocationHandler invocationHandler =
-        new MessageProxyInvocationHandler(messageImpl);
-    return (T) Proxy.newProxyInstance(classLoader, interfaces, invocationHandler);
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageProxyInvocationHandler.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageProxyInvocationHandler.java
deleted file mode 100644
index 2f1c2e2b..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/MessageProxyInvocationHandler.java
+++ /dev/null
@@ -1,51 +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.internal.message;
-
-import org.ros.internal.message.field.Field;
-import org.ros.internal.message.field.MessageFields;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageProxyInvocationHandler implements InvocationHandler {
-
-  private final MessageImpl messageImpl;
-
-  MessageProxyInvocationHandler(MessageImpl messageImpl) {
-    this.messageImpl = messageImpl;
-  }
-
-  @Override
-  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
-    String methodName = method.getName();
-    MessageFields mesageFields = messageImpl.getMessageFields();
-    Field getterField = mesageFields.getGetterField(methodName);
-    if (getterField != null) {
-      return getterField.getValue();
-    }
-    Field setterField = mesageFields.getSetterField(methodName);
-    if (setterField != null) {
-      setterField.setValue(args[0]);
-      return null;
-    }
-    return method.invoke(messageImpl, args);
-  }
-}
\ No newline at end of file
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/RawMessage.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/RawMessage.java
deleted file mode 100644
index 999db7a0..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/RawMessage.java
+++ /dev/null
@@ -1,207 +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.internal.message;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.ros.internal.message.field.Field;
-import org.ros.message.Duration;
-import org.ros.message.MessageIdentifier;
-import org.ros.message.Time;
-
-import java.util.List;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public interface RawMessage extends Message {
-
-  boolean getBool(String name);
-
-  boolean[] getBoolArray(String name);
-
-  /**
-   * @deprecated replaced by {@link #getInt8(String)}
-   */
-  byte getByte(String name);
-
-  /**
-   * @deprecated replaced by {@link #getInt8Array(String)}
-   */
-  byte[] getByteArray(String name);
-
-  /**
-   * @deprecated replaced by {@link #getUInt8(String)}
-   */
-  short getChar(String name);
-
-  /**
-   * @deprecated replaced by {@link #getUInt8Array(String)}
-   */
-  short[] getCharArray(String name);
-
-  String getDefinition();
-
-  Duration getDuration(String name);
-
-  List<Duration> getDurationList(String name);
-
-  List<Field> getFields();
-
-  float getFloat32(String name);
-
-  float[] getFloat32Array(String name);
-
-  double getFloat64(String name);
-
-  double[] getFloat64Array(String name);
-
-  MessageIdentifier getIdentifier();
-
-  short getInt16(String name);
-
-  short[] getInt16Array(String name);
-
-  int getInt32(String name);
-
-  int[] getInt32Array(String name);
-
-  long getInt64(String name);
-
-  long[] getInt64Array(String name);
-
-  byte getInt8(String name);
-
-  byte[] getInt8Array(String name);
-
-  <T extends Message> T getMessage(String name);
-
-  <T extends Message> List<T> getMessageList(String name);
-
-  String getName();
-
-  String getPackage();
-
-  String getString(String name);
-
-  List<String> getStringList(String name);
-
-  Time getTime(String name);
-
-  List<Time> getTimeList(String name);
-
-  String getType();
-
-  short getUInt16(String name);
-
-  short[] getUInt16Array(String name);
-
-  int getUInt32(String name);
-
-  int[] getUInt32Array(String name);
-
-  long getUInt64(String name);
-
-  long[] getUInt64Array(String name);
-
-  short getUInt8(String name);
-
-  short[] getUInt8Array(String name);
-
-  void setBool(String name, boolean value);
-
-  void setBoolArray(String name, boolean[] value);
-
-  /**
-   * @deprecated replaced by {@link #setInt8(String, byte)}
-   */
-  void setByte(String name, byte value);
-
-  /**
-   * @deprecated replaced by {@link #setInt8Array(String, byte[])}
-   */
-  void setByteArray(String name, byte[] value);
-
-  /**
-   * @deprecated replaced by {@link #setUInt8(String, byte)}
-   */
-  void setChar(String name, short value);
-
-  /**
-   * @deprecated replaced by {@link #setUInt8Array(String, byte[])}
-   */
-  void setCharArray(String name, short[] value);
-
-  void setDuration(String name, Duration value);
-
-  void setDurationList(String name, List<Duration> value);
-
-  void setFloat32(String name, float value);
-
-  void setFloat32Array(String name, float[] value);
-
-  void setFloat64(String name, double value);
-
-  void setFloat64Array(String name, double[] value);
-
-  void setInt16(String name, short value);
-
-  void setInt16Array(String name, short[] value);
-
-  void setInt32(String name, int value);
-
-  void setInt32Array(String name, int[] value);
-
-  void setInt64(String name, long value);
-
-  void setInt64Array(String name, long[] value);
-
-  void setInt8(String name, byte value);
-
-  void setInt8Array(String name, byte[] value);
-
-  void setMessage(String name, Message value);
-
-  void setMessageList(String name, List<Message> value);
-
-  void setString(String name, String value);
-
-  void setStringList(String name, List<String> value);
-
-  void setTime(String name, Time value);
-
-  void setTimeList(String name, List<Time> value);
-
-  void setUInt16(String name, short value);
-
-  void setUInt16Array(String name, short[] value);
-
-  void setUInt32(String name, int value);
-
-  void setUInt32Array(String name, int[] value);
-
-  void setUInt64(String name, long value);
-
-  void setUInt64Array(String name, long[] value);
-
-  void setUInt8(String name, byte value);
-
-  void setUInt8Array(String name, byte[] value);
-
-  void setChannelBuffer(String name, ChannelBuffer value);
-
-  ChannelBuffer getChannelBuffer(String name);
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/StringFileProvider.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/StringFileProvider.java
deleted file mode 100644
index 8d50c2b2..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/StringFileProvider.java
+++ /dev/null
@@ -1,130 +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.internal.message;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-import org.apache.commons.io.DirectoryWalker;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.filefilter.FileFilterUtils;
-import org.apache.commons.io.filefilter.IOFileFilter;
-import org.ros.exception.RosRuntimeException;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class StringFileProvider {
-
-  private final Collection<File> directories;
-  private final Map<File, String> strings;
-  private final StringFileDirectoryWalker stringFileDirectoryWalker;
-
-  private final class StringFileDirectoryWalker extends DirectoryWalker {
-    
-    private final Set<File> directories;
-
-    private StringFileDirectoryWalker(FileFilter filter, int depthLimit) {
-      super(filter, depthLimit);
-      directories = Sets.newHashSet();
-    }
-    
-    // TODO(damonkohler): Update Apache Commons IO to the latest version.
-    @SuppressWarnings("rawtypes")
-    @Override
-    protected boolean handleDirectory(File directory, int depth, Collection results)
-        throws IOException {
-      File canonicalDirectory = directory.getCanonicalFile();
-      if (directories.contains(canonicalDirectory)) {
-        return false;
-      }
-      directories.add(canonicalDirectory);
-      return true;
-    }
-
-    @SuppressWarnings("rawtypes")
-    @Override
-    protected void handleFile(File file, int depth, Collection results) {
-      String content;
-      try {
-        content = FileUtils.readFileToString(file, "US-ASCII");
-      } catch (IOException e) {
-        throw new RosRuntimeException(e);
-      }
-      strings.put(file, content);
-    }
-
-    public void update(File directory) {
-      try {
-        walk(directory, null);
-      } catch (IOException e) {
-        throw new RosRuntimeException(e);
-      }
-    }
-  }
-
-  public StringFileProvider(IOFileFilter ioFileFilter) {
-    directories = Lists.newArrayList();
-    strings = Maps.newConcurrentMap();
-    IOFileFilter directoryFilter = FileFilterUtils.directoryFileFilter();
-    FileFilter fileFilter = FileFilterUtils.orFileFilter(directoryFilter, ioFileFilter);
-    stringFileDirectoryWalker = new StringFileDirectoryWalker(fileFilter, -1);
-  }
-
-  public void update() {
-    for (File directory : directories) {
-      stringFileDirectoryWalker.update(directory);
-    }
-  }
-
-  /**
-   * Adds a new directory to be scanned for topic definition files.
-   * 
-   * @param directory
-   *          the directory to add
-   */
-  public void addDirectory(File directory) {
-    Preconditions.checkArgument(directory.isDirectory());
-    directories.add(directory);
-  }
-
-  public Map<File, String> getStrings() {
-    return ImmutableMap.copyOf(strings);
-  }
-
-  public String get(File file) {
-    if (!has(file)) {
-      throw new NoSuchElementException("File does not exist: " + file);
-    }
-    return strings.get(file);
-  }
-
-  public boolean has(File file) {
-    return strings.containsKey(file);
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/StringResourceProvider.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/StringResourceProvider.java
deleted file mode 100644
index 322f635c..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/StringResourceProvider.java
+++ /dev/null
@@ -1,73 +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.internal.message;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
-
-import org.ros.exception.RosRuntimeException;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.Charset;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class StringResourceProvider {
-
-  private final Map<String, String> cache;
-
-  public StringResourceProvider() {
-    cache = Maps.newConcurrentMap();
-  }
-
-  public String get(String resourceName) {
-    if (!has(resourceName)) {
-      throw new NoSuchElementException("Resource does not exist: " + resourceName);
-    }
-    if (!cache.containsKey(resourceName)) {
-      InputStream in = getClass().getResourceAsStream(resourceName);
-      StringBuilder out = new StringBuilder();
-      Charset charset = Charset.forName("US-ASCII");
-      byte[] buffer = new byte[8192];
-      try {
-        for (int bytesRead; (bytesRead = in.read(buffer)) != -1;) {
-          out.append(new String(buffer, 0, bytesRead, charset));
-        }
-      } catch (IOException e) {
-        throw new RosRuntimeException("Failed to read resource: " + resourceName, e);
-      }
-      cache.put(resourceName, out.toString());
-    }
-    return cache.get(resourceName);
-  }
-
-  public boolean has(String resourceName) {
-    return cache.containsKey(resourceName) || getClass().getResource(resourceName) != null;
-  }
-
-  public Map<String, String> getCachedStrings() {
-    return ImmutableMap.copyOf(cache);
-  }
-
-  public void addStringToCache(String resourceName, String resourceContent) {
-    cache.put(resourceName, resourceContent);
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/context/MessageContext.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/context/MessageContext.java
deleted file mode 100644
index 11f4a2b4..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/context/MessageContext.java
+++ /dev/null
@@ -1,144 +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.internal.message.context;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-import org.ros.internal.message.field.FieldFactory;
-import org.ros.message.MessageDeclaration;
-import org.ros.message.MessageFactory;
-import org.ros.message.MessageIdentifier;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Encapsulates the immutable metadata that describes a message type.
- * <p>
- * Note that this class is not thread safe.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageContext {
-
-  private final MessageDeclaration messageDeclaration;
-  private final MessageFactory messageFactory;
-  private final Map<String, FieldFactory> fieldFactories;
-  private final Map<String, String> fieldGetterNames;
-  private final Map<String, String> fieldSetterNames;
-  private final List<String> fieldNames;
-
-  public MessageContext(MessageDeclaration messageDeclaration, MessageFactory messageFactory) {
-    this.messageDeclaration = messageDeclaration;
-    this.messageFactory = messageFactory;
-    this.fieldFactories = Maps.newHashMap();
-    this.fieldGetterNames = Maps.newHashMap();
-    this.fieldSetterNames = Maps.newHashMap();
-    this.fieldNames = Lists.newArrayList();
-  }
-
-  public MessageFactory getMessageFactory() {
-    return messageFactory;
-  }
-
-  public MessageIdentifier getMessageIdentifer() {
-    return messageDeclaration.getMessageIdentifier();
-  }
-
-  public String getType() {
-    return messageDeclaration.getType();
-  }
-
-  public String getPackage() {
-    return messageDeclaration.getPackage();
-  }
-
-  public String getName() {
-    return messageDeclaration.getName();
-  }
-
-  public String getDefinition() {
-    return messageDeclaration.getDefinition();
-  }
-
-  public void addFieldFactory(String name, FieldFactory fieldFactory) {
-    fieldFactories.put(name, fieldFactory);
-    fieldGetterNames.put(name, "get" + getJavaName(name));
-    fieldSetterNames.put(name, "set" + getJavaName(name));
-    fieldNames.add(name);
-  }
-
-  private String getJavaName(String name) {
-    String[] parts = name.split("_");
-    StringBuilder fieldName = new StringBuilder();
-    for (String part : parts) {
-      fieldName.append(part.substring(0, 1).toUpperCase() + part.substring(1));
-    }
-    return fieldName.toString();
-  }
-
-  public boolean hasField(String name) {
-    // O(1) instead of an O(n) check against the list of field names.
-    return fieldFactories.containsKey(name);
-  }
-
-  public String getFieldGetterName(String name) {
-    return fieldGetterNames.get(name);
-  }
-
-  public String getFieldSetterName(String name) {
-    return fieldSetterNames.get(name);
-  }
-
-  public FieldFactory getFieldFactory(String name) {
-    return fieldFactories.get(name);
-  }
-
-  /**
-   * @return a {@link List} of field names in the order they were added
-   */
-  public List<String> getFieldNames() {
-    return Collections.unmodifiableList(fieldNames);
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = 1;
-    result = prime * result + ((messageDeclaration == null) ? 0 : messageDeclaration.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;
-    MessageContext other = (MessageContext) obj;
-    if (messageDeclaration == null) {
-      if (other.messageDeclaration != null)
-        return false;
-    } else if (!messageDeclaration.equals(other.messageDeclaration))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/context/MessageContextBuilder.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/context/MessageContextBuilder.java
deleted file mode 100644
index dd14924d..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/context/MessageContextBuilder.java
+++ /dev/null
@@ -1,85 +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.internal.message.context;
-
-import com.google.common.base.Preconditions;
-
-import org.ros.internal.message.definition.MessageDefinitionParser.MessageDefinitionVisitor;
-import org.ros.internal.message.field.Field;
-import org.ros.internal.message.field.FieldFactory;
-import org.ros.internal.message.field.FieldType;
-import org.ros.internal.message.field.MessageFieldType;
-import org.ros.internal.message.field.PrimitiveFieldType;
-import org.ros.message.MessageIdentifier;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-class MessageContextBuilder implements MessageDefinitionVisitor {
-
-  private final MessageContext messageContext;
-
-  public MessageContextBuilder(MessageContext context) {
-    this.messageContext = context;
-  }
-
-  private FieldType getFieldType(String type) {
-    Preconditions.checkArgument(!type.equals(messageContext.getType()),
-        "Message definitions may not be self-referential.");
-    FieldType fieldType;
-    if (PrimitiveFieldType.existsFor(type)) {
-      fieldType = PrimitiveFieldType.valueOf(type.toUpperCase());
-    } else {
-      fieldType =
-          new MessageFieldType(MessageIdentifier.of(type), messageContext.getMessageFactory());
-    }
-    return fieldType;
-  }
-
-  @Override
-  public void variableValue(String type, final String name) {
-    final FieldType fieldType = getFieldType(type);
-    messageContext.addFieldFactory(name, new FieldFactory() {
-      @Override
-      public Field create() {
-        return fieldType.newVariableValue(name);
-      }
-    });
-  }
-
-  @Override
-  public void variableList(String type, final int size, final String name) {
-    final FieldType fieldType = getFieldType(type);
-    messageContext.addFieldFactory(name, new FieldFactory() {
-      @Override
-      public Field create() {
-        return fieldType.newVariableList(name, size);
-      }
-    });
-  }
-
-  @Override
-  public void constantValue(String type, final String name, final String value) {
-    final FieldType fieldType = getFieldType(type);
-    messageContext.addFieldFactory(name, new FieldFactory() {
-      @Override
-      public Field create() {
-        return fieldType.newConstantValue(name, fieldType.parseFromString(value));
-      }
-    });
-  }
-}
\ No newline at end of file
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/context/MessageContextProvider.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/context/MessageContextProvider.java
deleted file mode 100644
index 0782970a..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/context/MessageContextProvider.java
+++ /dev/null
@@ -1,55 +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.internal.message.context;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Maps;
-
-import org.ros.internal.message.definition.MessageDefinitionParser;
-import org.ros.internal.message.definition.MessageDefinitionParser.MessageDefinitionVisitor;
-import org.ros.message.MessageDeclaration;
-import org.ros.message.MessageFactory;
-
-import java.util.Map;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageContextProvider {
-
-  private final Map<MessageDeclaration, MessageContext> cache;
-  private final MessageFactory messageFactory;
-
-  public MessageContextProvider(MessageFactory messageFactory) {
-    Preconditions.checkNotNull(messageFactory);
-    this.messageFactory = messageFactory;
-    cache = Maps.newConcurrentMap();
-  }
-
-  public MessageContext get(MessageDeclaration messageDeclaration) {
-    MessageContext messageContext = cache.get(messageDeclaration);
-    if (messageContext == null) {
-      messageContext = new MessageContext(messageDeclaration, messageFactory);
-      MessageDefinitionVisitor visitor = new MessageContextBuilder(messageContext);
-      MessageDefinitionParser messageDefinitionParser = new MessageDefinitionParser(visitor);
-      messageDefinitionParser.parse(messageDeclaration.getType(),
-          messageDeclaration.getDefinition());
-      cache.put(messageDeclaration, messageContext);
-    }
-    return messageContext;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionFileProvider.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionFileProvider.java
deleted file mode 100644
index 4aa03891..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionFileProvider.java
+++ /dev/null
@@ -1,114 +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.internal.message.definition;
-
-import com.google.common.collect.Maps;
-
-import org.ros.internal.message.StringFileProvider;
-
-import org.apache.commons.io.FilenameUtils;
-import org.ros.message.MessageDefinitionProvider;
-import org.ros.message.MessageIdentifier;
-
-import java.io.File;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Map.Entry;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageDefinitionFileProvider implements MessageDefinitionProvider {
-
-  private final StringFileProvider stringFileProvider;
-  private final Map<String, Collection<MessageIdentifier>> messageIdentifiers;
-  private final Map<String, String> definitions;
-
-  public MessageDefinitionFileProvider(StringFileProvider stringFileProvider) {
-    this.stringFileProvider = stringFileProvider;
-    messageIdentifiers = Maps.newConcurrentMap();
-    definitions = Maps.newConcurrentMap();
-  }
-
-  private static String getParent(String filename) {
-    return FilenameUtils.getFullPathNoEndSeparator(filename);
-  }
-
-  protected static String getParentBaseName(String filename) {
-    return FilenameUtils.getBaseName(getParent(filename));
-  }
-
-  private static MessageIdentifier fileToMessageIdentifier(File file) {
-    String filename = file.getAbsolutePath();
-    String name = FilenameUtils.getBaseName(filename);
-    String pkg = getParentBaseName(getParent(filename));
-    return MessageIdentifier.of(pkg, name);
-  }
-
-  private void addDefinition(File file, String definition) {
-    MessageIdentifier topicType = fileToMessageIdentifier(file);
-    if (definitions.containsKey(topicType.getType())) {
-      // First definition wins.
-      return;
-    }
-    definitions.put(topicType.getType(), definition);
-    if (!messageIdentifiers.containsKey(topicType.getPackage())) {
-      messageIdentifiers.put(topicType.getPackage(), new HashSet<MessageIdentifier>());
-    }
-    messageIdentifiers.get(topicType.getPackage()).add(topicType);
-  }
-
-  /**
-   * Updates the topic definition cache.
-   * 
-   * @see StringFileProvider#update()
-   */
-  public void update() {
-    stringFileProvider.update();
-    for (Entry<File, String> entry : stringFileProvider.getStrings().entrySet()) {
-      addDefinition(entry.getKey(), entry.getValue());
-    }
-  }
-
-  /**
-   * @see StringFileProvider#addDirectory(File)
-   */
-  public void addDirectory(File directory) {
-    stringFileProvider.addDirectory(directory);
-  }
-
-  @Override
-  public Collection<String> getPackages() {
-    return messageIdentifiers.keySet();
-  }
-
-  @Override
-  public Collection<MessageIdentifier> getMessageIdentifiersByPackage(String pkg) {
-    return messageIdentifiers.get(pkg);
-  }
-
-  @Override
-  public String get(String type) {
-    return definitions.get(type);
-  }
-
-  @Override
-  public boolean has(String type) {
-    return definitions.containsKey(type);
-  }
-}
\ No newline at end of file
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionParser.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionParser.java
deleted file mode 100644
index a5ef3be2..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionParser.java
+++ /dev/null
@@ -1,176 +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.internal.message.definition;
-
-import com.google.common.base.Preconditions;
-
-import org.ros.exception.RosRuntimeException;
-import org.ros.internal.message.field.PrimitiveFieldType;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.StringReader;
-
-/**
- * Parses message definitions and invokes a {@link MessageDefinitionVisitor} for
- * each field.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageDefinitionParser {
-
-  private final MessageDefinitionVisitor visitor;
-
-  public interface MessageDefinitionVisitor {
-    /**
-     * Called for each constant in the message definition.
-     * 
-     * @param type
-     *          the type of the constant
-     * @param name
-     *          the name of the constant
-     * @param value
-     *          the value of the constant
-     */
-    void constantValue(String type, String name, String value);
-
-    /**
-     * Called for each scalar in the message definition.
-     * 
-     * @param type
-     *          the type of the scalar
-     * @param name
-     *          the name of the scalar
-     */
-    void variableValue(String type, String name);
-
-    /**
-     * Called for each array in the message definition.
-     * 
-     * @param type
-     *          the type of the array
-     * @param size
-     *          the size of the array or -1 if the size is unbounded
-     * @param name
-     *          the name of the array
-     */
-    void variableList(String type, int size, String name);
-  }
-
-  /**
-   * @param visitor
-   *          the {@link MessageDefinitionVisitor} that will be called for each
-   *          field
-   */
-  public MessageDefinitionParser(MessageDefinitionVisitor visitor) {
-    this.visitor = visitor;
-  }
-
-  /**
-   * Parses the message definition
-   * 
-   * @param messageType
-   *          the type of message defined (e.g. std_msgs/String)
-   * @param messageDefinition
-   *          the message definition (e.g. "string data")
-   */
-  public void parse(String messageType, String messageDefinition) {
-    Preconditions.checkNotNull(messageType);
-    Preconditions.checkNotNull(messageDefinition);
-    BufferedReader reader = new BufferedReader(new StringReader(messageDefinition));
-    String line;
-    try {
-      while (true) {
-        line = reader.readLine();
-        if (line == null) {
-          break;
-        }
-        line = line.trim();
-        if (line.startsWith("#")) {
-          continue;
-        }
-        if (line.length() > 0) {
-          parseField(messageType, line);
-        }
-      }
-    } catch (IOException e) {
-      throw new RosRuntimeException(e);
-    }
-  }
-
-  private void parseField(String messageType, String fieldDefinition) {
-    // TODO(damonkohler): Regex input validation.
-    String[] typeAndName = fieldDefinition.split("\\s+", 2);
-    Preconditions.checkState(typeAndName.length == 2,
-        String.format("Invalid field definition: \"%s\"", fieldDefinition));
-    String type = typeAndName[0];
-    String name = typeAndName[1];
-    String value = null;
-    if (name.contains("=") && (!name.contains("#") || name.indexOf('#') > name.indexOf('='))) {
-      String[] nameAndValue = name.split("=", 2);
-      name = nameAndValue[0].trim();
-      value = nameAndValue[1].trim();
-    } else if (name.contains("#")) {
-      // Stripping comments from constants is deferred until we also know the
-      // type since strings are handled differently.
-      Preconditions.checkState(!name.startsWith("#"), String.format(
-          "Fields must define a name. Field definition in %s was: \"%s\"", messageType,
-          fieldDefinition));
-      name = name.substring(0, name.indexOf('#'));
-      name = name.trim();
-    }
-    boolean array = false;
-    int size = -1;
-    if (type.endsWith("]")) {
-      int leftBracketIndex = type.lastIndexOf('[');
-      int rightBracketIndex = type.lastIndexOf(']');
-      array = true;
-      if (rightBracketIndex - leftBracketIndex > 1) {
-        size = Integer.parseInt(type.substring(leftBracketIndex + 1, rightBracketIndex));
-      }
-      type = type.substring(0, leftBracketIndex);
-    }
-    if (type.equals("Header")) {
-      // The header field is treated as though it were a built-in and silently
-      // expanded to "std_msgs/Header."
-      Preconditions.checkState(name.equals("header"), "Header field must be named \"header.\"");
-      type = "std_msgs/Header";
-    } else if (!PrimitiveFieldType.existsFor(type) && !type.contains("/")) {
-      // Handle package relative message names.
-      type = messageType.substring(0, messageType.lastIndexOf('/') + 1) + type;
-    }
-    if (value != null) {
-      if (array) {
-        // TODO(damonkohler): Handle array constants?
-        throw new UnsupportedOperationException("Array constants are not supported.");
-      }
-      // Comments inline with string constants are treated as data.
-      if (!type.equals(PrimitiveFieldType.STRING.getName()) && value.contains("#")) {
-        Preconditions.checkState(!value.startsWith("#"), "Constants must define a value.");
-        value = value.substring(0, value.indexOf('#'));
-        value = value.trim();
-      }
-      visitor.constantValue(type, name, value);
-    } else {
-      if (array) {
-        visitor.variableList(type, size, name);
-      } else {
-        visitor.variableValue(type, name);
-      }
-    }
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionProviderChain.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionProviderChain.java
deleted file mode 100644
index 9bf71de2..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionProviderChain.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.internal.message.definition;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-
-import org.ros.message.MessageDefinitionProvider;
-import org.ros.message.MessageIdentifier;
-
-import java.util.Collection;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageDefinitionProviderChain implements MessageDefinitionProvider {
-
-  private final Collection<MessageDefinitionProvider> messageDefinitionProviders;
-
-  public MessageDefinitionProviderChain() {
-    messageDefinitionProviders = Lists.newArrayList();
-  }
-
-  public void addMessageDefinitionProvider(MessageDefinitionProvider messageDefinitionProvider) {
-    messageDefinitionProviders.add(messageDefinitionProvider);
-  }
-
-  @Override
-  public String get(String messageType) {
-    for (MessageDefinitionProvider messageDefinitionProvider : messageDefinitionProviders) {
-      if (messageDefinitionProvider.has(messageType)) {
-        return messageDefinitionProvider.get(messageType);
-      }
-    }
-    throw new NoSuchElementException("No message definition available for: " + messageType);
-  }
-
-  @Override
-  public boolean has(String messageType) {
-    for (MessageDefinitionProvider messageDefinitionProvider : messageDefinitionProviders) {
-      if (messageDefinitionProvider.has(messageType)) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @Override
-  public Collection<String> getPackages() {
-    Set<String> result = Sets.newHashSet();
-    for (MessageDefinitionProvider messageDefinitionProvider : messageDefinitionProviders) {
-      Collection<String> packages = messageDefinitionProvider.getPackages();
-      result.addAll(packages);
-    }
-    return result;
-  }
-
-  @Override
-  public Collection<MessageIdentifier> getMessageIdentifiersByPackage(String pkg) {
-    Set<MessageIdentifier> result = Sets.newHashSet();
-    for (MessageDefinitionProvider messageDefinitionProvider : messageDefinitionProviders) {
-      Collection<MessageIdentifier> messageIdentifiers =
-          messageDefinitionProvider.getMessageIdentifiersByPackage(pkg);
-      if (messageIdentifiers != null) {
-        result.addAll(messageIdentifiers);
-      }
-    }
-    return result;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionReflectionProvider.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionReflectionProvider.java
deleted file mode 100644
index b0df12cb..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionReflectionProvider.java
+++ /dev/null
@@ -1,88 +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.internal.message.definition;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.Maps;
-
-import org.ros.exception.RosRuntimeException;
-import org.ros.message.MessageDefinitionProvider;
-import org.ros.message.MessageIdentifier;
-
-import java.util.Collection;
-import java.util.Map;
-
-/**
- * A {@link MessageDefinitionProvider} that uses reflection to load the message
- * definition {@link String} from a generated interface {@link Class}.
- * <p>
- * Note that this {@link MessageDefinitionProvider} does not support enumerating
- * messages by package.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageDefinitionReflectionProvider implements MessageDefinitionProvider {
-
-  private static final String DEFINITION_FIELD = "_DEFINITION";
-
-  private final Map<String, String> cache;
-
-  public MessageDefinitionReflectionProvider() {
-    cache = Maps.newConcurrentMap();
-  }
-
-  @Override
-  public String get(String messageType) {
-    String messageDefinition = cache.get(messageType);
-    if (messageDefinition == null) {
-      String className = messageType.replace("/", ".");
-      try {
-        Class<?> loadedClass = getClass().getClassLoader().loadClass(className);
-        messageDefinition = (String) loadedClass.getDeclaredField(DEFINITION_FIELD).get(null);
-        cache.put(messageType, messageDefinition);
-      } catch (Exception e) {
-        throw new RosRuntimeException(e);
-      }
-    }
-    return messageDefinition;
-  }
-
-  @Override
-  public boolean has(String messageType) {
-    try {
-      get(messageType);
-    } catch (Exception e) {
-      return false;
-    }
-    return true;
-  }
-
-  @Override
-  public Collection<String> getPackages() {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public Collection<MessageIdentifier> getMessageIdentifiersByPackage(String pkg) {
-    throw new UnsupportedOperationException();
-  }
-
-  @VisibleForTesting
-  public void add(String messageType, String messageDefinition) {
-    cache.put(messageType, messageDefinition);
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionTupleParser.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionTupleParser.java
deleted file mode 100644
index e7cdc9fb..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/definition/MessageDefinitionTupleParser.java
+++ /dev/null
@@ -1,68 +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.internal.message.definition;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-/**
- * Splits message definitions tuples (e.g. service definitions) into separate
- * message definitions.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageDefinitionTupleParser {
-
-  private static final String SEPARATOR = "---";
-
-  /**
-   * Splits the message definition tuple into a {@link List} of message
-   * definitions. Split message definitions may be empty (e.g. std_srvs/Empty).
-   * 
-   * @param definition
-   *          the message definition tuple
-   * @param size
-   *          the expected tuple size, or -1 to ignore this requirement
-   * @return a {@link List} of the specified size
-   */
-  public static List<String> parse(String definition, int size) {
-    Preconditions.checkNotNull(definition);
-    List<String> definitions = Lists.newArrayList();
-    StringBuilder current = new StringBuilder();
-    for (String line : definition.split("\n")) {
-      if (line.startsWith(SEPARATOR)) {
-        definitions.add(current.toString());
-        current = new StringBuilder();
-        continue;
-      }
-      current.append(line);
-      current.append("\n");
-    }
-    if (current.length() > 0) {
-      current.deleteCharAt(current.length() - 1);
-    }
-    definitions.add(current.toString());
-    Preconditions.checkState(size == -1 || definitions.size() <= size,
-        String.format("Message tuple exceeds expected size: %d > %d", definitions.size(), size));
-    while (definitions.size() < size) {
-      definitions.add("");
-    }
-    return definitions;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/BooleanArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/BooleanArrayField.java
deleted file mode 100644
index 75a9fe17..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/BooleanArrayField.java
+++ /dev/null
@@ -1,117 +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.internal.message.field;
-
-import com.google.common.base.Preconditions;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-import java.util.Arrays;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class BooleanArrayField extends Field {
-
-  private final int size;
-
-  private boolean[] value;
-
-  public static BooleanArrayField newVariable(String name, int size) {
-    return new BooleanArrayField(PrimitiveFieldType.BOOL, name, size);
-  }
-
-  private BooleanArrayField(FieldType type, String name, int size) {
-    super(type, name, false);
-    this.size = size;
-    setValue(new boolean[Math.max(0, size)]);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public boolean[] getValue() {
-    return value;
-  }
-
-  @Override
-  public void setValue(Object value) {
-    Preconditions.checkArgument(size < 0 || ((boolean[]) value).length == size);
-    this.value = (boolean[]) value;
-  }
-
-  @Override
-  public void serialize(ChannelBuffer buffer) {
-    if (size < 0) {
-      buffer.writeInt(value.length);
-    }
-    for (boolean v : value) {
-      type.serialize(v, buffer);
-    }
-  }
-
-  @Override
-  public void deserialize(ChannelBuffer buffer) {
-    int currentSize = size;
-    if (currentSize < 0) {
-      currentSize = buffer.readInt();
-    }
-    value = new boolean[currentSize];
-    for (int i = 0; i < currentSize; i++) {
-      value[i] = buffer.readByte() == 1;
-    }
-  }
-
-  @Override
-  public String getMd5String() {
-    return String.format("%s %s\n", type, name);
-  }
-
-  @Override
-  public String getJavaTypeName() {
-    return type.getJavaTypeName() + "[]";
-  }
-
-  @Override
-  public String toString() {
-    return "BooleanArrayField<" + type + ", " + name + ">";
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = super.hashCode();
-    result = prime * result + ((value == null) ? 0 : value.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (!super.equals(obj))
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    BooleanArrayField other = (BooleanArrayField) obj;
-    if (value == null) {
-      if (other.value != null)
-        return false;
-    } else if (!Arrays.equals(value, other.value))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ByteArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ByteArrayField.java
deleted file mode 100644
index 02e08bfb..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ByteArrayField.java
+++ /dev/null
@@ -1,117 +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.internal.message.field;
-
-import com.google.common.base.Preconditions;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-import java.util.Arrays;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class ByteArrayField extends Field {
-
-  private final int size;
-
-  private byte[] value;
-
-  public static ByteArrayField newVariable(FieldType type, String name, int size) {
-    return new ByteArrayField(type, name, size);
-  }
-
-  private ByteArrayField(FieldType type, String name, int size) {
-    super(type, name, false);
-    this.size = size;
-    setValue(new byte[Math.max(0, size)]);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public byte[] getValue() {
-    return value;
-  }
-
-  @Override
-  public void setValue(Object value) {
-    Preconditions.checkArgument(size < 0 || ((byte[]) value).length == size);
-    this.value = (byte[]) value;
-  }
-
-  @Override
-  public void serialize(ChannelBuffer buffer) {
-    if (size < 0) {
-      buffer.writeInt(value.length);
-    }
-    for (byte v : value) {
-      type.serialize(v, buffer);
-    }
-  }
-
-  @Override
-  public void deserialize(ChannelBuffer buffer) {
-    int currentSize = size;
-    if (currentSize < 0) {
-      currentSize = buffer.readInt();
-    }
-    value = new byte[currentSize];
-    for (int i = 0; i < currentSize; i++) {
-      value[i] = buffer.readByte();
-    }
-  }
-
-  @Override
-  public String getMd5String() {
-    return String.format("%s %s\n", type, name);
-  }
-
-  @Override
-  public String getJavaTypeName() {
-    return type.getJavaTypeName() + "[]";
-  }
-
-  @Override
-  public String toString() {
-    return "ByteArrayField<" + type + ", " + name + ">";
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = super.hashCode();
-    result = prime * result + ((value == null) ? 0 : value.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (!super.equals(obj))
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    ByteArrayField other = (ByteArrayField) obj;
-    if (value == null) {
-      if (other.value != null)
-        return false;
-    } else if (!Arrays.equals(value, other.value))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ChannelBufferField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ChannelBufferField.java
deleted file mode 100644
index a13f5425..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ChannelBufferField.java
+++ /dev/null
@@ -1,118 +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.internal.message.field;
-
-import com.google.common.base.Preconditions;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.ros.internal.message.MessageBuffers;
-
-import java.nio.ByteOrder;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class ChannelBufferField extends Field {
-
-  private final int size;
-
-  private ChannelBuffer value;
-
-  public static ChannelBufferField newVariable(FieldType type, String name, int size) {
-    return new ChannelBufferField(type, name, size);
-  }
-
-  private ChannelBufferField(FieldType type, String name, int size) {
-    super(type, name, false);
-    this.size = size;
-    value = MessageBuffers.dynamicBuffer();
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public ChannelBuffer getValue() {
-    // Return a defensive duplicate. Unlike with copy(), duplicated
-    // ChannelBuffers share the same backing array, so this is relatively cheap.
-    return value.duplicate();
-  }
-
-  @Override
-  public void setValue(Object value) {
-    Preconditions.checkArgument(((ChannelBuffer) value).order() == ByteOrder.LITTLE_ENDIAN);
-    Preconditions.checkArgument(size < 0 || ((ChannelBuffer) value).readableBytes() == size);
-    this.value = (ChannelBuffer) value;
-  }
-
-  @Override
-  public void serialize(ChannelBuffer buffer) {
-    if (size < 0) {
-      buffer.writeInt(value.readableBytes());
-    }
-    // By specifying the start index and length we avoid modifying value's
-    // indices and marks.
-    buffer.writeBytes(value, 0, value.readableBytes());
-  }
-
-  @Override
-  public void deserialize(ChannelBuffer buffer) {
-    int currentSize = size;
-    if (currentSize < 0) {
-      currentSize = buffer.readInt();
-    }
-    value = buffer.readSlice(currentSize);
-  }
-
-  @Override
-  public String getMd5String() {
-    return String.format("%s %s\n", type, name);
-  }
-
-  @Override
-  public String getJavaTypeName() {
-    return "org.jboss.netty.buffer.ChannelBuffer";
-  }
-
-  @Override
-  public String toString() {
-    return "ChannelBufferField<" + type + ", " + name + ">";
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = super.hashCode();
-    result = prime * result + ((value == null) ? 0 : value.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (!super.equals(obj))
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    ChannelBufferField other = (ChannelBufferField) obj;
-    if (value == null) {
-      if (other.value != null)
-        return false;
-    } else if (!value.equals(other.value))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/DoubleArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/DoubleArrayField.java
deleted file mode 100644
index a0c3945f..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/DoubleArrayField.java
+++ /dev/null
@@ -1,117 +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.internal.message.field;
-
-import com.google.common.base.Preconditions;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-import java.util.Arrays;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class DoubleArrayField extends Field {
-
-  private final int size;
-
-  private double[] value;
-
-  public static DoubleArrayField newVariable(String name, int size) {
-    return new DoubleArrayField(PrimitiveFieldType.FLOAT64, name, size);
-  }
-
-  private DoubleArrayField(FieldType type, String name, int size) {
-    super(type, name, false);
-    this.size = size;
-    setValue(new double[Math.max(0, size)]);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public double[] getValue() {
-    return value;
-  }
-
-  @Override
-  public void setValue(Object value) {
-    Preconditions.checkArgument(size < 0 || ((double[]) value).length == size);
-    this.value = (double[]) value;
-  }
-
-  @Override
-  public void serialize(ChannelBuffer buffer) {
-    if (size < 0) {
-      buffer.writeInt(value.length);
-    }
-    for (double v : value) {
-      type.serialize(v, buffer);
-    }
-  }
-
-  @Override
-  public void deserialize(ChannelBuffer buffer) {
-    int currentSize = size;
-    if (currentSize < 0) {
-      currentSize = buffer.readInt();
-    }
-    value = new double[currentSize];
-    for (int i = 0; i < currentSize; i++) {
-      value[i] = buffer.readDouble();
-    }
-  }
-
-  @Override
-  public String getMd5String() {
-    return String.format("%s %s\n", type, name);
-  }
-
-  @Override
-  public String getJavaTypeName() {
-    return type.getJavaTypeName() + "[]";
-  }
-
-  @Override
-  public String toString() {
-    return "DoubleArrayField<" + type + ", " + name + ">";
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = super.hashCode();
-    result = prime * result + ((value == null) ? 0 : value.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (!super.equals(obj))
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    DoubleArrayField other = (DoubleArrayField) obj;
-    if (value == null) {
-      if (other.value != null)
-        return false;
-    } else if (!Arrays.equals(value, other.value))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/Field.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/Field.java
deleted file mode 100644
index d714dfc2..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/Field.java
+++ /dev/null
@@ -1,113 +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.internal.message.field;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public abstract class Field {
-
-  protected final FieldType type;
-  protected final String name;
-  protected final boolean isConstant;
-
-  protected Field(FieldType type, String name, boolean isConstant) {
-    this.name = name;
-    this.type = type;
-    this.isConstant = isConstant;
-  }
-
-  /**
-   * @return the name
-   */
-  public String getName() {
-    return name;
-  }
-
-  /**
-   * @return the type
-   */
-  public FieldType getType() {
-    return type;
-  }
-
-  /**
-   * @return <code>true</code> if this {@link ListField} represents a constant
-   */
-  public boolean isConstant() {
-    return isConstant;
-  }
-
-  /**
-   * @return the textual representation of this field used for computing the MD5
-   *         of a message definition
-   */
-  public String getMd5String() {
-    if (isConstant()) {
-      return String.format("%s %s=%s\n", getType().getMd5String(), getName(), getValue());
-    }
-    return String.format("%s %s\n", getType().getMd5String(), getName());
-  }
-
-  public abstract void serialize(ChannelBuffer buffer);
-
-  public abstract void deserialize(ChannelBuffer buffer);
-
-  public abstract <T> T getValue();
-
-  // TODO(damonkohler): Why not make Field generic?
-  public abstract void setValue(Object value);
-
-  public abstract String getJavaTypeName();
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = 1;
-    result = prime * result + (isConstant ? 1231 : 1237);
-    result = prime * result + ((name == null) ? 0 : name.hashCode());
-    result = prime * result + ((type == null) ? 0 : type.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;
-    Field other = (Field) obj;
-    if (isConstant != other.isConstant)
-      return false;
-    if (name == null) {
-      if (other.name != null)
-        return false;
-    } else if (!name.equals(other.name))
-      return false;
-    if (type == null) {
-      if (other.type != null)
-        return false;
-    } else if (!type.equals(other.type))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FieldFactory.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FieldFactory.java
deleted file mode 100644
index 24b30539..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FieldFactory.java
+++ /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.
- */
-
-package org.ros.internal.message.field;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public interface FieldFactory {
-
-  Field create();
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FieldType.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FieldType.java
deleted file mode 100644
index b227b4db..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FieldType.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.internal.message.field;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public interface FieldType {
-
-  public <T> T getDefaultValue();
-
-  public String getName();
-
-  public <T> T parseFromString(String value);
-
-  public String getMd5String();
-
-  public String getJavaTypeName();
-
-  /**
-   * @return the serialized size of this {@link FieldType} in bytes
-   */
-  public int getSerializedSize();
-
-  public <T> void serialize(T value, ChannelBuffer buffer);
-
-  public <T> T deserialize(ChannelBuffer buffer);
-
-  public Field newVariableValue(String name);
-
-  public Field newVariableList(String name, int size);
-
-  public <T> Field newConstantValue(String name, T value);
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FloatArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FloatArrayField.java
deleted file mode 100644
index fcbf50c2..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FloatArrayField.java
+++ /dev/null
@@ -1,117 +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.internal.message.field;
-
-import com.google.common.base.Preconditions;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-import java.util.Arrays;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class FloatArrayField extends Field {
-
-  private final int size;
-
-  private float[] value;
-
-  public static FloatArrayField newVariable(String name, int size) {
-    return new FloatArrayField(PrimitiveFieldType.FLOAT32, name, size);
-  }
-
-  private FloatArrayField(FieldType type, String name, int size) {
-    super(type, name, false);
-    this.size = size;
-    setValue(new float[Math.max(0, size)]);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public float[] getValue() {
-    return value;
-  }
-
-  @Override
-  public void setValue(Object value) {
-    Preconditions.checkArgument(size < 0 || ((float[]) value).length == size);
-    this.value = (float[]) value;
-  }
-
-  @Override
-  public void serialize(ChannelBuffer buffer) {
-    if (size < 0) {
-      buffer.writeInt(value.length);
-    }
-    for (float v : value) {
-      type.serialize(v, buffer);
-    }
-  }
-
-  @Override
-  public void deserialize(ChannelBuffer buffer) {
-    int currentSize = size;
-    if (currentSize < 0) {
-      currentSize = buffer.readInt();
-    }
-    value = new float[currentSize];
-    for (int i = 0; i < currentSize; i++) {
-      value[i] = buffer.readFloat();
-    }
-  }
-
-  @Override
-  public String getMd5String() {
-    return String.format("%s %s\n", type, name);
-  }
-
-  @Override
-  public String getJavaTypeName() {
-    return type.getJavaTypeName() + "[]";
-  }
-
-  @Override
-  public String toString() {
-    return "FloatArrayField<" + type + ", " + name + ">";
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = super.hashCode();
-    result = prime * result + ((value == null) ? 0 : value.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (!super.equals(obj))
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    FloatArrayField other = (FloatArrayField) obj;
-    if (value == null) {
-      if (other.value != null)
-        return false;
-    } else if (!Arrays.equals(value, other.value))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/IntegerArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/IntegerArrayField.java
deleted file mode 100644
index adb0753f..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/IntegerArrayField.java
+++ /dev/null
@@ -1,117 +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.internal.message.field;
-
-import com.google.common.base.Preconditions;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-import java.util.Arrays;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class IntegerArrayField extends Field {
-
-  private final int size;
-
-  private int[] value;
-
-  public static IntegerArrayField newVariable(FieldType type, String name, int size) {
-    return new IntegerArrayField(type, name, size);
-  }
-
-  private IntegerArrayField(FieldType type, String name, int size) {
-    super(type, name, false);
-    this.size = size;
-    setValue(new int[Math.max(0, size)]);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public int[] getValue() {
-    return value;
-  }
-
-  @Override
-  public void setValue(Object value) {
-    Preconditions.checkArgument(size < 0 || ((int[]) value).length == size);
-    this.value = (int[]) value;
-  }
-
-  @Override
-  public void serialize(ChannelBuffer buffer) {
-    if (size < 0) {
-      buffer.writeInt(value.length);
-    }
-    for (int v : value) {
-      type.serialize(v, buffer);
-    }
-  }
-
-  @Override
-  public void deserialize(ChannelBuffer buffer) {
-    int currentSize = size;
-    if (currentSize < 0) {
-      currentSize = buffer.readInt();
-    }
-    value = new int[currentSize];
-    for (int i = 0; i < currentSize; i++) {
-      value[i] = buffer.readInt();
-    }
-  }
-
-  @Override
-  public String getMd5String() {
-    return String.format("%s %s\n", type, name);
-  }
-
-  @Override
-  public String getJavaTypeName() {
-    return type.getJavaTypeName() + "[]";
-  }
-
-  @Override
-  public String toString() {
-    return "IntegerArrayField<" + type + ", " + name + ">";
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = super.hashCode();
-    result = prime * result + ((value == null) ? 0 : value.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (!super.equals(obj))
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    IntegerArrayField other = (IntegerArrayField) obj;
-    if (value == null) {
-      if (other.value != null)
-        return false;
-    } else if (!Arrays.equals(value, other.value))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ListField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ListField.java
deleted file mode 100644
index 4f4caeb1..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ListField.java
+++ /dev/null
@@ -1,115 +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.internal.message.field;
-
-import com.google.common.base.Preconditions;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- * 
- * @param <T>
- *          the value type
- */
-public class ListField<T> extends Field {
-
-  private List<T> value;
-
-  public static <T> ListField<T> newVariable(FieldType type, String name) {
-    return new ListField<T>(type, name);
-  }
-
-  private ListField(FieldType type, String name) {
-    super(type, name, false);
-    value = new ArrayList<T>();
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public List<T> getValue() {
-    return value;
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public void setValue(Object value) {
-    Preconditions.checkNotNull(value);
-    this.value = (List<T>) value;
-  }
-
-  @Override
-  public void serialize(ChannelBuffer buffer) {
-    buffer.writeInt(value.size());
-    for (T v : value) {
-      type.serialize(v, buffer);
-    }
-  }
-
-  @Override
-  public void deserialize(ChannelBuffer buffer) {
-    value.clear();
-    int size = buffer.readInt();
-    for (int i = 0; i < size; i++) {
-      value.add(type.<T>deserialize(buffer));
-    }
-  }
-
-  @Override
-  public String getMd5String() {
-    return String.format("%s %s\n", type, name);
-  }
-
-  @Override
-  public String getJavaTypeName() {
-    return String.format("java.util.List<%s>", type.getJavaTypeName());
-  }
-
-  @Override
-  public String toString() {
-    return "ListField<" + type + ", " + name + ">";
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = super.hashCode();
-    result = prime * result + ((value == null) ? 0 : value.hashCode());
-    return result;
-  }
-
-  @SuppressWarnings("rawtypes")
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (!super.equals(obj))
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    ListField other = (ListField) obj;
-    if (value == null) {
-      if (other.value != null)
-        return false;
-    } else if (!value.equals(other.value))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/LongArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/LongArrayField.java
deleted file mode 100644
index 8c2a611b..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/LongArrayField.java
+++ /dev/null
@@ -1,119 +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.internal.message.field;
-
-import com.google.common.base.Preconditions;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-import java.util.Arrays;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class LongArrayField extends Field {
-
-  private final int size;
-
-  private long[] value;
-
-  public static LongArrayField newVariable(FieldType type, String name, int size) {
-    Preconditions.checkArgument(type.equals(PrimitiveFieldType.UINT32)
-        || type.equals(PrimitiveFieldType.INT64) || type.equals(PrimitiveFieldType.UINT64));
-    return new LongArrayField(type, name, size);
-  }
-
-  private LongArrayField(FieldType type, String name, int size) {
-    super(type, name, false);
-    this.size = size;
-    setValue(new long[Math.max(0, size)]);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public long[] getValue() {
-    return value;
-  }
-
-  @Override
-  public void setValue(Object value) {
-    Preconditions.checkArgument(size < 0 || ((long[]) value).length == size);
-    this.value = (long[]) value;
-  }
-
-  @Override
-  public void serialize(ChannelBuffer buffer) {
-    if (size < 0) {
-      buffer.writeInt(value.length);
-    }
-    for (long v : value) {
-      type.serialize(v, buffer);
-    }
-  }
-
-  @Override
-  public void deserialize(ChannelBuffer buffer) {
-    int currentSize = size;
-    if (currentSize < 0) {
-      currentSize = buffer.readInt();
-    }
-    value = new long[currentSize];
-    for (int i = 0; i < currentSize; i++) {
-      value[i] = buffer.readLong();
-    }
-  }
-
-  @Override
-  public String getMd5String() {
-    return String.format("%s %s\n", type, name);
-  }
-
-  @Override
-  public String getJavaTypeName() {
-    return type.getJavaTypeName() + "[]";
-  }
-
-  @Override
-  public String toString() {
-    return "LongArrayField<" + type + ", " + name + ">";
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = super.hashCode();
-    result = prime * result + ((value == null) ? 0 : value.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (!super.equals(obj))
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    LongArrayField other = (LongArrayField) obj;
-    if (value == null) {
-      if (other.value != null)
-        return false;
-    } else if (!Arrays.equals(value, other.value))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/MessageFieldType.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/MessageFieldType.java
deleted file mode 100644
index b70e6faf..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/MessageFieldType.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.internal.message.field;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.ros.internal.message.DefaultMessageDeserializer;
-import org.ros.internal.message.DefaultMessageSerializer;
-import org.ros.internal.message.Message;
-import org.ros.message.MessageDeserializer;
-import org.ros.message.MessageFactory;
-import org.ros.message.MessageIdentifier;
-import org.ros.message.MessageSerializer;
-
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageFieldType implements FieldType {
-
-  private final MessageIdentifier messageIdentifier;
-  private final MessageFactory messageFactory;
-  private final MessageSerializer<Message> serializer;
-  private final MessageDeserializer<Message> deserializer;
-
-  public MessageFieldType(MessageIdentifier messageIdentifier, MessageFactory messageFactory) {
-    this.messageIdentifier = messageIdentifier;
-    this.messageFactory = messageFactory;
-    serializer = new DefaultMessageSerializer();
-    deserializer = new DefaultMessageDeserializer<Message>(messageIdentifier, messageFactory);
-  }
-
-  public MessageFactory getMessageFactory() {
-    return messageFactory;
-  }
-
-  @Override
-  public Field newVariableValue(String name) {
-    return ValueField.newVariable(this, name);
-  }
-
-  @Override
-  public <T> Field newConstantValue(String name, T value) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public Field newVariableList(String name, int size) {
-    return ListField.newVariable(this, name);
-  }
-
-  @Override
-  public <T> T getDefaultValue() {
-    return getMessageFactory().newFromType(messageIdentifier.getType());
-  }
-
-  @Override
-  public String getMd5String() {
-    return null;
-  }
-
-  @Override
-  public String getJavaTypeName() {
-    return String.format("%s.%s", messageIdentifier.getPackage(), messageIdentifier.getName());
-  }
-
-  @Override
-  public int getSerializedSize() {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public String getName() {
-    return messageIdentifier.getType();
-  }
-
-  @Override
-  public <T> void serialize(T value, ChannelBuffer buffer) {
-    serializer.serialize((Message) value, buffer);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public Message deserialize(ChannelBuffer buffer) {
-    return deserializer.deserialize(buffer);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public Void parseFromString(String value) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public String toString() {
-    return "MessageField<" + messageIdentifier + ">";
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = 1;
-    result = prime * result + ((messageIdentifier == null) ? 0 : messageIdentifier.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;
-    MessageFieldType other = (MessageFieldType) obj;
-    if (messageIdentifier == null) {
-      if (other.messageIdentifier != null)
-        return false;
-    } else if (!messageIdentifier.equals(other.messageIdentifier))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/MessageFields.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/MessageFields.java
deleted file mode 100644
index b640972d..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/MessageFields.java
+++ /dev/null
@@ -1,116 +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.internal.message.field;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-import org.ros.exception.RosRuntimeException;
-import org.ros.internal.message.context.MessageContext;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageFields {
-
-  private final Map<String, Field> fields;
-  private final Map<String, Field> setters;
-  private final Map<String, Field> getters;
-  private final List<Field> orderedFields;
-
-  public MessageFields(MessageContext messageContext) {
-    fields = Maps.newHashMap();
-    setters = Maps.newHashMap();
-    getters = Maps.newHashMap();
-    orderedFields = Lists.newArrayList();
-    for (String name : messageContext.getFieldNames()) {
-      Field field = messageContext.getFieldFactory(name).create();
-      fields.put(name, field);
-      getters.put(messageContext.getFieldGetterName(name), field);
-      setters.put(messageContext.getFieldSetterName(name), field);
-      orderedFields.add(field);
-    }
-  }
-
-  public Field getField(String name) {
-    return fields.get(name);
-  }
-
-  public Field getSetterField(String name) {
-    return setters.get(name);
-  }
-
-  public Field getGetterField(String name) {
-    return getters.get(name);
-  }
-
-  public List<Field> getFields() {
-    return Collections.unmodifiableList(orderedFields);
-  }
-
-  public Object getFieldValue(String name) {
-    Field field = fields.get(name);
-    if (field != null) {
-      return field.getValue();
-    }
-    throw new RosRuntimeException("Uknown field: " + name);
-  }
-
-  public void setFieldValue(String name, Object value) {
-    Field field = fields.get(name);
-    if (field != null) {
-      field.setValue(value);
-    } else {
-      throw new RosRuntimeException("Uknown field: " + name);
-    }
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = 1;
-    result = prime * result + ((fields == null) ? 0 : fields.hashCode());
-    result = prime * result + ((orderedFields == null) ? 0 : orderedFields.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;
-    MessageFields other = (MessageFields) obj;
-    if (fields == null) {
-      if (other.fields != null)
-        return false;
-    } else if (!fields.equals(other.fields))
-      return false;
-    if (orderedFields == null) {
-      if (other.orderedFields != null)
-        return false;
-    } else if (!orderedFields.equals(other.orderedFields))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/PrimitiveFieldType.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/PrimitiveFieldType.java
deleted file mode 100644
index bed4916e..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/PrimitiveFieldType.java
+++ /dev/null
@@ -1,714 +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.internal.message.field;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableSet;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.ros.message.Duration;
-import org.ros.message.Time;
-
-import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public enum PrimitiveFieldType implements FieldType {
-
-  BOOL {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Boolean getDefaultValue() {
-      return Boolean.FALSE;
-    }
-
-    @Override
-    public BooleanArrayField newVariableList(String name, int size) {
-      return BooleanArrayField.newVariable(name, size);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return 1;
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      Preconditions.checkArgument(value instanceof Boolean);
-      buffer.writeByte((byte) ((Boolean) value ? 1 : 0));
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Boolean deserialize(ChannelBuffer buffer) {
-      return buffer.readByte() == 1;
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Boolean parseFromString(String value) {
-      return value.equals("1");
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return "boolean";
-    }
-  },
-  INT8 {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Byte getDefaultValue() {
-      return Byte.valueOf((byte) 0);
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return ChannelBufferField.newVariable(this, name, size);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return 1;
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      Preconditions.checkArgument(value instanceof Byte);
-      buffer.writeByte((Byte) value);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Byte deserialize(ChannelBuffer buffer) {
-      return buffer.readByte();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Byte parseFromString(String value) {
-      return Byte.parseByte(value);
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return "byte";
-    }
-  },
-  /**
-   * @deprecated replaced by {@link PrimitiveFieldType#INT8}
-   */
-  BYTE {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Byte getDefaultValue() {
-      return INT8.getDefaultValue();
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return ChannelBufferField.newVariable(this, name, size);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return INT8.getSerializedSize();
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      INT8.serialize(value, buffer);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Byte deserialize(ChannelBuffer buffer) {
-      return INT8.deserialize(buffer);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Byte parseFromString(String value) {
-      return INT8.parseFromString(value);
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return INT8.getJavaTypeName();
-    }
-  },
-  UINT8 {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Byte getDefaultValue() {
-      return INT8.getDefaultValue();
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return ChannelBufferField.newVariable(this, name, size);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return INT8.getSerializedSize();
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      INT8.serialize(value, buffer);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Byte deserialize(ChannelBuffer buffer) {
-      return INT8.deserialize(buffer);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Byte parseFromString(String value) {
-      return (byte) Short.parseShort(value);
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return INT8.getJavaTypeName();
-    }
-  },
-  /**
-   * @deprecated replaced by {@link PrimitiveFieldType#UINT8}
-   */
-  CHAR {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Byte getDefaultValue() {
-      return UINT8.getDefaultValue();
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return ChannelBufferField.newVariable(this, name, size);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return UINT8.getSerializedSize();
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      UINT8.serialize(value, buffer);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Byte deserialize(ChannelBuffer buffer) {
-      return UINT8.deserialize(buffer);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Byte parseFromString(String value) {
-      return UINT8.parseFromString(value);
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return UINT8.getJavaTypeName();
-    }
-  },
-  INT16 {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Short getDefaultValue() {
-      return Short.valueOf((short) 0);
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return ShortArrayField.newVariable(this, name, size);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return 2;
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      Preconditions.checkArgument(value instanceof Short);
-      buffer.writeShort((Short) value);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Short deserialize(ChannelBuffer buffer) {
-      return buffer.readShort();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Short parseFromString(String value) {
-      return Short.parseShort(value);
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return "short";
-    }
-  },
-  UINT16 {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Short getDefaultValue() {
-      return INT16.getDefaultValue();
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return ShortArrayField.newVariable(this, name, size);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return INT16.getSerializedSize();
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      INT16.serialize(value, buffer);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Short deserialize(ChannelBuffer buffer) {
-      return INT16.deserialize(buffer);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Short parseFromString(String value) {
-      return (short) Integer.parseInt(value);
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return INT16.getJavaTypeName();
-    }
-  },
-  INT32 {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Integer getDefaultValue() {
-      return Integer.valueOf(0);
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return IntegerArrayField.newVariable(this, name, size);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return 4;
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      Preconditions.checkArgument(value instanceof Integer);
-      buffer.writeInt((Integer) value);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Integer deserialize(ChannelBuffer buffer) {
-      return buffer.readInt();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Integer parseFromString(String value) {
-      return Integer.parseInt(value);
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return "int";
-    }
-  },
-  UINT32 {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Integer getDefaultValue() {
-      return INT32.getDefaultValue();
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return IntegerArrayField.newVariable(this, name, size);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return INT32.getSerializedSize();
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      INT32.serialize(value, buffer);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Integer deserialize(ChannelBuffer buffer) {
-      return INT32.deserialize(buffer);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Integer parseFromString(String value) {
-      return (int) Long.parseLong(value);
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return INT32.getJavaTypeName();
-    }
-  },
-  INT64 {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Long getDefaultValue() {
-      return Long.valueOf(0);
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return LongArrayField.newVariable(this, name, size);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return 8;
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      Preconditions.checkArgument(value instanceof Long);
-      buffer.writeLong((Long) value);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Long deserialize(ChannelBuffer buffer) {
-      return buffer.readLong();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Long parseFromString(String value) {
-      return Long.parseLong(value);
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return "long";
-    }
-  },
-  UINT64 {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Long getDefaultValue() {
-      return INT64.getDefaultValue();
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return INT64.newVariableList(name, size);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return INT64.getSerializedSize();
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      INT64.serialize(value, buffer);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Long deserialize(ChannelBuffer buffer) {
-      return INT64.deserialize(buffer);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Long parseFromString(String value) {
-      return INT64.parseFromString(value);
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return INT64.getJavaTypeName();
-    }
-  },
-  FLOAT32 {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Float getDefaultValue() {
-      return Float.valueOf(0);
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return FloatArrayField.newVariable(name, size);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return 4;
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      Preconditions.checkArgument(value instanceof Float);
-      buffer.writeFloat((Float) value);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Float deserialize(ChannelBuffer buffer) {
-      return buffer.readFloat();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Float parseFromString(String value) {
-      return Float.parseFloat(value);
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return "float";
-    }
-  },
-  FLOAT64 {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Double getDefaultValue() {
-      return Double.valueOf(0);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return 8;
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return DoubleArrayField.newVariable(name, size);
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      Preconditions.checkArgument(value instanceof Double);
-      buffer.writeDouble((Double) value);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Double deserialize(ChannelBuffer buffer) {
-      return buffer.readDouble();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Double parseFromString(String value) {
-      return Double.parseDouble(value);
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return "double";
-    }
-  },
-  STRING {
-    @SuppressWarnings("unchecked")
-    @Override
-    public String getDefaultValue() {
-      return "";
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return ListField.newVariable(this, name);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      Preconditions.checkArgument(value instanceof String);
-      byte[] bytes = ((String) value).getBytes();
-      buffer.writeInt(bytes.length);
-      buffer.writeBytes(bytes);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public String deserialize(ChannelBuffer buffer) {
-      int length = buffer.readInt();
-      ByteBuffer stringBuffer = buffer.readSlice(length).toByteBuffer();
-      return Charset.forName("US-ASCII").decode(stringBuffer).toString();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public String parseFromString(String value) {
-      return value;
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return "java.lang.String";
-    }
-  },
-  TIME {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Time getDefaultValue() {
-      return new Time();
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return ListField.newVariable(this, name);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return 8;
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      Preconditions.checkArgument(value instanceof Time);
-      buffer.writeInt(((Time) value).secs);
-      buffer.writeInt(((Time) value).nsecs);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Time deserialize(ChannelBuffer buffer) {
-      return new Time(buffer.readInt(), buffer.readInt());
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Void parseFromString(String value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return Time.class.getName();
-    }
-  },
-  DURATION {
-    @SuppressWarnings("unchecked")
-    @Override
-    public Duration getDefaultValue() {
-      return new Duration();
-    }
-
-    @Override
-    public Field newVariableList(String name, int size) {
-      return ListField.newVariable(this, name);
-    }
-
-    @Override
-    public int getSerializedSize() {
-      return 8;
-    }
-
-    @Override
-    public <T> void serialize(T value, ChannelBuffer buffer) {
-      Preconditions.checkArgument(value instanceof Duration);
-      buffer.writeInt(((Duration) value).secs);
-      buffer.writeInt(((Duration) value).nsecs);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Duration deserialize(ChannelBuffer buffer) {
-      return new Duration(buffer.readInt(), buffer.readInt());
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Void parseFromString(String value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getJavaTypeName() {
-      return Duration.class.getName();
-    }
-  };
-
-  private static final ImmutableSet<String> TYPE_NAMES;
-
-  static {
-    ImmutableSet.Builder<String> builder = ImmutableSet.<String>builder();
-    for (PrimitiveFieldType type : values()) {
-      builder.add(type.getName());
-    }
-    TYPE_NAMES = builder.build();
-  }
-
-  public static boolean existsFor(String name) {
-    return TYPE_NAMES.contains(name);
-  }
-
-  @Override
-  public Field newVariableValue(String name) {
-    return ValueField.newVariable(this, name);
-  }
-
-  @Override
-  public <T> Field newConstantValue(String name, T value) {
-    return ValueField.newConstant(this, name, value);
-  }
-
-  @Override
-  public String getName() {
-    return toString().toLowerCase();
-  }
-
-  @Override
-  public String getMd5String() {
-    return getName();
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ShortArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ShortArrayField.java
deleted file mode 100644
index e77b72a3..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ShortArrayField.java
+++ /dev/null
@@ -1,117 +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.internal.message.field;
-
-import com.google.common.base.Preconditions;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-import java.util.Arrays;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class ShortArrayField extends Field {
-
-  private final int size;
-
-  private short[] value;
-
-  public static ShortArrayField newVariable(FieldType type, String name, int size) {
-    return new ShortArrayField(type, name, size);
-  }
-
-  private ShortArrayField(FieldType type, String name, int size) {
-    super(type, name, false);
-    this.size = size;
-    setValue(new short[Math.max(0, size)]);
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public short[] getValue() {
-    return value;
-  }
-
-  @Override
-  public void setValue(Object value) {
-    Preconditions.checkArgument(size < 0 || ((short[]) value).length == size);
-    this.value = (short[]) value;
-  }
-
-  @Override
-  public void serialize(ChannelBuffer buffer) {
-    if (size < 0) {
-      buffer.writeInt(value.length);
-    }
-    for (short v : value) {
-      type.serialize(v, buffer);
-    }
-  }
-
-  @Override
-  public void deserialize(ChannelBuffer buffer) {
-    int currentSize = size;
-    if (currentSize < 0) {
-      currentSize = buffer.readInt();
-    }
-    value = new short[currentSize];
-    for (int i = 0; i < currentSize; i++) {
-      value[i] = buffer.readShort();
-    }
-  }
-
-  @Override
-  public String getMd5String() {
-    return String.format("%s %s\n", type, name);
-  }
-
-  @Override
-  public String getJavaTypeName() {
-    return type.getJavaTypeName() + "[]";
-  }
-
-  @Override
-  public String toString() {
-    return "ShortArrayField<" + type + ", " + name + ">";
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = super.hashCode();
-    result = prime * result + ((value == null) ? 0 : value.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (!super.equals(obj))
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    ShortArrayField other = (ShortArrayField) obj;
-    if (value == null) {
-      if (other.value != null)
-        return false;
-    } else if (!Arrays.equals(value, other.value))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ValueField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ValueField.java
deleted file mode 100644
index d2baacf5..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ValueField.java
+++ /dev/null
@@ -1,110 +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.internal.message.field;
-
-import com.google.common.base.Preconditions;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-class ValueField<T> extends Field {
-
-  private T value;
-
-  static <T> ValueField<T> newConstant(FieldType type, String name, T value) {
-    return new ValueField<T>(type, name, value, true);
-  }
-
-  static <T> ValueField<T> newVariable(FieldType type, String name) {
-    return new ValueField<T>(type, name, null, false);
-  }
-
-  private ValueField(FieldType type, String name, T value, boolean isConstant) {
-    super(type, name, isConstant);
-    this.value = value;
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public T getValue() {
-    if (value == null) {
-      setValue(type.getDefaultValue());
-    }
-    return value;
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public void setValue(Object value) {
-    Preconditions.checkNotNull(value);
-    Preconditions.checkState(!isConstant);
-    this.value = (T) value;
-  }
-
-  @Override
-  public void serialize(ChannelBuffer buffer) {
-    type.serialize(getValue(), buffer);
-  }
-
-  @Override
-  public void deserialize(ChannelBuffer buffer) {
-    Preconditions.checkState(!isConstant);
-    setValue(type.<T>deserialize(buffer));
-  }
-
-  @Override
-  public String getMd5String() {
-    return String.format("%s %s\n", type, name);
-  }
-
-  @Override
-  public String getJavaTypeName() {
-    return type.getJavaTypeName();
-  }
-
-  @Override
-  public String toString() {
-    return "ValueField<" + type + ", " + name + ">";
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = super.hashCode();
-    result = prime * result + ((getValue() == null) ? 0 : getValue().hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (!super.equals(obj))
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    Field other = (Field) obj;
-    if (getValue() == null) {
-      if (other.getValue() != null)
-        return false;
-    } else if (!getValue().equals(other.getValue()))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/package-info.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/package-info.java
deleted file mode 100644
index a59b1c8e..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/package-info.java
+++ /dev/null
@@ -1,22 +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 internal classes for representing messages.
- * <p>
- * These classes should _not_ be used directly outside of the org.ros package.
- */
-package org.ros.internal.message;
\ No newline at end of file
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDefinitionFileProvider.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDefinitionFileProvider.java
deleted file mode 100644
index 31b258f8..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDefinitionFileProvider.java
+++ /dev/null
@@ -1,51 +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.internal.message.service;
-
-import org.ros.internal.message.definition.MessageDefinitionFileProvider;
-
-import org.apache.commons.io.filefilter.FileFilterUtils;
-import org.apache.commons.io.filefilter.IOFileFilter;
-import org.ros.internal.message.StringFileProvider;
-
-import java.io.File;
-import java.io.FileFilter;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class ServiceDefinitionFileProvider extends MessageDefinitionFileProvider {
-
-  private static final String PARENT = "srv";
-  private static final String SUFFIX = "srv";
-
-  private static StringFileProvider newStringFileProvider() {
-    IOFileFilter extensionFilter = FileFilterUtils.suffixFileFilter(SUFFIX);
-    IOFileFilter parentBaseNameFilter = FileFilterUtils.asFileFilter(new FileFilter() {
-      @Override
-      public boolean accept(File file) {
-        return getParentBaseName(file.getAbsolutePath()).equals(PARENT);
-      }
-    });
-    IOFileFilter fileFilter = FileFilterUtils.andFileFilter(extensionFilter, parentBaseNameFilter);
-    return new StringFileProvider(fileFilter);
-  }
-
-  public ServiceDefinitionFileProvider() {
-    super(newStringFileProvider());
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDefinitionResourceProvider.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDefinitionResourceProvider.java
deleted file mode 100644
index af35e3ff..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDefinitionResourceProvider.java
+++ /dev/null
@@ -1,69 +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.internal.message.service;
-
-import com.google.common.base.Preconditions;
-
-import org.ros.internal.message.StringResourceProvider;
-import org.ros.message.MessageDefinitionProvider;
-import org.ros.message.MessageIdentifier;
-
-import java.util.Collection;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class ServiceDefinitionResourceProvider implements MessageDefinitionProvider {
-
-  private final StringResourceProvider stringResourceProvider;
-
-  public ServiceDefinitionResourceProvider() {
-    stringResourceProvider = new StringResourceProvider();
-  }
-
-  private String serviceTypeToResourceName(String serviceType) {
-    Preconditions.checkArgument(serviceType.contains("/"), "Service type must be fully qualified: "
-        + serviceType);
-    String[] packageAndType = serviceType.split("/", 2);
-    return String.format("/%s/srv/%s.srv", packageAndType[0], packageAndType[1]);
-  }
-
-  @Override
-  public String get(String serviceType) {
-    return stringResourceProvider.get(serviceTypeToResourceName(serviceType));
-  }
-
-  @Override
-  public boolean has(String serviceType) {
-    return stringResourceProvider.has(serviceTypeToResourceName(serviceType));
-  }
-
-  public void add(String serviceType, String serviceDefinition) {
-    stringResourceProvider.addStringToCache(serviceTypeToResourceName(serviceType),
-        serviceDefinition);
-  }
-
-  @Override
-  public Collection<String> getPackages() {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public Collection<MessageIdentifier> getMessageIdentifiersByPackage(String pkg) {
-    throw new UnsupportedOperationException();
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDescription.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDescription.java
deleted file mode 100644
index 95251a04..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDescription.java
+++ /dev/null
@@ -1,98 +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.internal.message.service;
-
-import org.ros.internal.message.definition.MessageDefinitionTupleParser;
-
-import org.ros.message.MessageDeclaration;
-import org.ros.message.MessageIdentifier;
-
-import java.util.List;
-
-/**
- * The description of a ROS service.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class ServiceDescription extends MessageDeclaration {
-
-  private final String requestType;
-  private final String requestDefinition;
-  private final String responseType;
-  private final String responseDefinition;
-  private final String md5Checksum;
-
-  public ServiceDescription(String type, String definition, String md5Checksum) {
-    super(MessageIdentifier.of(type), definition);
-    this.md5Checksum = md5Checksum;
-    List<String> requestAndResponse = MessageDefinitionTupleParser.parse(definition, 2);
-    requestType = type + "Request";
-    responseType = type + "Response";
-    requestDefinition = requestAndResponse.get(0);
-    responseDefinition = requestAndResponse.get(1);
-  }
-
-  public String getMd5Checksum() {
-    return md5Checksum;
-  }
-
-  public String getRequestType() {
-    return requestType;
-  }
-
-  public String getRequestDefinition() {
-    return requestDefinition;
-  }
-
-  public String getResponseType() {
-    return responseType;
-  }
-
-  public String getResponseDefinition() {
-    return responseDefinition;
-  }
-
-  @Override
-  public String toString() {
-    return "ServiceDescription<" + getType() + ", " + md5Checksum + ">";
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = super.hashCode();
-    result = prime * result + ((md5Checksum == null) ? 0 : md5Checksum.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (!super.equals(obj))
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    ServiceDescription other = (ServiceDescription) obj;
-    if (md5Checksum == null) {
-      if (other.md5Checksum != null)
-        return false;
-    } else if (!md5Checksum.equals(other.md5Checksum))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDescriptionFactory.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDescriptionFactory.java
deleted file mode 100644
index 269d4024..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDescriptionFactory.java
+++ /dev/null
@@ -1,44 +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.internal.message.service;
-
-import org.ros.internal.message.Md5Generator;
-import org.ros.message.MessageDefinitionProvider;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class ServiceDescriptionFactory {
-
-  private final MessageDefinitionProvider messageDefinitionProvider;
-  private final Md5Generator md5Generator;
-
-  public ServiceDescriptionFactory(MessageDefinitionProvider messageDefinitionProvider) {
-    this.messageDefinitionProvider = messageDefinitionProvider;
-    md5Generator = new Md5Generator(messageDefinitionProvider);
-  }
-
-  public ServiceDescription newFromType(String serviceType) {
-    String serviceDefinition = messageDefinitionProvider.get(serviceType);
-    String md5Checksum = md5Generator.generate(serviceType);
-    return new ServiceDescription(serviceType, serviceDefinition, md5Checksum);
-  }
-
-  public boolean hasType(String serviceType) {
-    return messageDefinitionProvider.has(serviceType);
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceRequestMessageFactory.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceRequestMessageFactory.java
deleted file mode 100644
index 862b20d1..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceRequestMessageFactory.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.internal.message.service;
-
-import org.ros.internal.message.DefaultMessageFactory;
-import org.ros.internal.message.DefaultMessageInterfaceClassProvider;
-import org.ros.internal.message.MessageProxyFactory;
-import org.ros.message.MessageDeclaration;
-import org.ros.message.MessageDefinitionProvider;
-import org.ros.message.MessageFactory;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class ServiceRequestMessageFactory implements MessageFactory {
-
-  private final ServiceDescriptionFactory serviceDescriptionFactory;
-  private final MessageFactory messageFactory;
-  private final MessageProxyFactory messageProxyFactory;
-
-  public ServiceRequestMessageFactory(MessageDefinitionProvider messageDefinitionProvider) {
-    serviceDescriptionFactory = new ServiceDescriptionFactory(messageDefinitionProvider);
-    messageFactory = new DefaultMessageFactory(messageDefinitionProvider);
-    messageProxyFactory =
-        new MessageProxyFactory(new DefaultMessageInterfaceClassProvider(), messageFactory);
-  }
-
-  @Override
-  public <T> T newFromType(String serviceType) {
-    ServiceDescription serviceDescription = serviceDescriptionFactory.newFromType(serviceType);
-    MessageDeclaration messageDeclaration =
-        MessageDeclaration.of(serviceDescription.getRequestType(),
-            serviceDescription.getRequestDefinition());
-    return messageProxyFactory.newMessageProxy(messageDeclaration);
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceRequestMessageInterfaceClassProvider.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceRequestMessageInterfaceClassProvider.java
deleted file mode 100644
index 24b4b52f..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceRequestMessageInterfaceClassProvider.java
+++ /dev/null
@@ -1,37 +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.internal.message.service;
-
-import org.ros.internal.message.MessageInterfaceClassProvider;
-import org.ros.internal.message.RawMessage;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class ServiceRequestMessageInterfaceClassProvider implements MessageInterfaceClassProvider {
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public <T> Class<T> get(String messageType) {
-    try {
-      String className = messageType.replace("/", ".") + "$Request";
-      return (Class<T>) getClass().getClassLoader().loadClass(className);
-    } catch (ClassNotFoundException e) {
-      return (Class<T>) RawMessage.class;
-    }
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceResponseMessageFactory.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceResponseMessageFactory.java
deleted file mode 100644
index c325c44b..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceResponseMessageFactory.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.internal.message.service;
-
-import org.ros.internal.message.DefaultMessageFactory;
-import org.ros.internal.message.DefaultMessageInterfaceClassProvider;
-import org.ros.internal.message.MessageProxyFactory;
-import org.ros.message.MessageDeclaration;
-import org.ros.message.MessageDefinitionProvider;
-import org.ros.message.MessageFactory;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class ServiceResponseMessageFactory implements MessageFactory {
-
-  private final ServiceDescriptionFactory serviceDescriptionFactory;
-  private final MessageFactory messageFactory;
-  private final MessageProxyFactory messageProxyFactory;
-
-  public ServiceResponseMessageFactory(MessageDefinitionProvider messageDefinitionProvider) {
-    serviceDescriptionFactory = new ServiceDescriptionFactory(messageDefinitionProvider);
-    messageFactory = new DefaultMessageFactory(messageDefinitionProvider);
-    messageProxyFactory =
-        new MessageProxyFactory(new DefaultMessageInterfaceClassProvider(), messageFactory);
-  }
-
-  @Override
-  public <T> T newFromType(String serviceType) {
-    ServiceDescription serviceDescription = serviceDescriptionFactory.newFromType(serviceType);
-    MessageDeclaration messageDeclaration =
-        MessageDeclaration.of(serviceDescription.getResponseType(),
-            serviceDescription.getResponseDefinition());
-    return messageProxyFactory.newMessageProxy(messageDeclaration);
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceResponseMessageInterfaceClassProvider.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceResponseMessageInterfaceClassProvider.java
deleted file mode 100644
index 0e61fb93..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceResponseMessageInterfaceClassProvider.java
+++ /dev/null
@@ -1,37 +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.internal.message.service;
-
-import org.ros.internal.message.MessageInterfaceClassProvider;
-import org.ros.internal.message.RawMessage;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class ServiceResponseMessageInterfaceClassProvider implements MessageInterfaceClassProvider {
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public <T> Class<T> get(String messageType) {
-    try {
-      String className = messageType.replace("/", ".") + "$Response";
-      return (Class<T>) getClass().getClassLoader().loadClass(className);
-    } catch (ClassNotFoundException e) {
-      return (Class<T>) RawMessage.class;
-    }
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/package-info.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/package-info.java
deleted file mode 100644
index 82c80380..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/service/package-info.java
+++ /dev/null
@@ -1,22 +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 internal classes for representing service messages.
- * <p>
- * These classes should _not_ be used directly outside of the org.ros package.
- */
-package org.ros.internal.message.service;
\ No newline at end of file
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDefinitionFileProvider.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDefinitionFileProvider.java
deleted file mode 100644
index 5cc8e1ef..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDefinitionFileProvider.java
+++ /dev/null
@@ -1,51 +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.internal.message.topic;
-
-import org.ros.internal.message.definition.MessageDefinitionFileProvider;
-
-import org.apache.commons.io.filefilter.FileFilterUtils;
-import org.apache.commons.io.filefilter.IOFileFilter;
-import org.ros.internal.message.StringFileProvider;
-
-import java.io.File;
-import java.io.FileFilter;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class TopicDefinitionFileProvider extends MessageDefinitionFileProvider {
-
-  private static final String PARENT = "msg";
-  private static final String SUFFIX = "msg";
-
-  private static StringFileProvider newStringFileProvider() {
-    IOFileFilter extensionFilter = FileFilterUtils.suffixFileFilter(SUFFIX);
-    IOFileFilter parentBaseNameFilter = FileFilterUtils.asFileFilter(new FileFilter() {
-      @Override
-      public boolean accept(File file) {
-        return getParentBaseName(file.getAbsolutePath()).equals(PARENT);
-      }
-    });
-    IOFileFilter fileFilter = FileFilterUtils.andFileFilter(extensionFilter, parentBaseNameFilter);
-    return new StringFileProvider(fileFilter);
-  }
-
-  public TopicDefinitionFileProvider() {
-    super(newStringFileProvider());
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDefinitionResourceProvider.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDefinitionResourceProvider.java
deleted file mode 100644
index 08dce892..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDefinitionResourceProvider.java
+++ /dev/null
@@ -1,68 +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.internal.message.topic;
-
-import com.google.common.annotations.VisibleForTesting;
-
-import org.ros.internal.message.StringResourceProvider;
-import org.ros.message.MessageDefinitionProvider;
-import org.ros.message.MessageIdentifier;
-
-import java.util.Collection;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class TopicDefinitionResourceProvider implements MessageDefinitionProvider {
-
-  private final StringResourceProvider stringResourceProvider;
-
-  public TopicDefinitionResourceProvider() {
-    stringResourceProvider = new StringResourceProvider();
-  }
-
-  private String topicTypeToResourceName(String topicType) {
-    MessageIdentifier messageIdentifier = MessageIdentifier.of(topicType);
-    return String.format("/%s/msg/%s.msg", messageIdentifier.getPackage(),
-        messageIdentifier.getName());
-  }
-
-  @Override
-  public String get(String topicType) {
-    return stringResourceProvider.get(topicTypeToResourceName(topicType));
-  }
-
-  @Override
-  public boolean has(String topicType) {
-    return stringResourceProvider.has(topicTypeToResourceName(topicType));
-  }
-
-  @VisibleForTesting
-  public void add(String topicType, String topicDefinition) {
-    stringResourceProvider.addStringToCache(topicTypeToResourceName(topicType), topicDefinition);
-  }
-
-  @Override
-  public Collection<String> getPackages() {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public Collection<MessageIdentifier> getMessageIdentifiersByPackage(String pkg) {
-    throw new UnsupportedOperationException();
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDescription.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDescription.java
deleted file mode 100644
index 50c9ad33..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDescription.java
+++ /dev/null
@@ -1,69 +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.internal.message.topic;
-
-import org.ros.message.MessageDeclaration;
-import org.ros.message.MessageIdentifier;
-
-/**
- * The description of a ROS topic.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class TopicDescription extends MessageDeclaration {
-
-  private final String md5Checksum;
-
-  public TopicDescription(String type, String definition, String md5Checksum) {
-    super(MessageIdentifier.of(type), definition);
-    this.md5Checksum = md5Checksum;
-  }
-
-  public String getMd5Checksum() {
-    return md5Checksum;
-  }
-
-  @Override
-  public String toString() {
-    return "TopicDescription<" + getType() + ", " + md5Checksum + ">";
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = super.hashCode();
-    result = prime * result + ((md5Checksum == null) ? 0 : md5Checksum.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (!super.equals(obj))
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    TopicDescription other = (TopicDescription) obj;
-    if (md5Checksum == null) {
-      if (other.md5Checksum != null)
-        return false;
-    } else if (!md5Checksum.equals(other.md5Checksum))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDescriptionFactory.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDescriptionFactory.java
deleted file mode 100644
index 27e8620d..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicDescriptionFactory.java
+++ /dev/null
@@ -1,44 +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.internal.message.topic;
-
-import org.ros.internal.message.Md5Generator;
-import org.ros.message.MessageDefinitionProvider;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class TopicDescriptionFactory {
-
-  private final MessageDefinitionProvider messageDefinitionProvider;
-  private final Md5Generator md5Generator;
-
-  public TopicDescriptionFactory(MessageDefinitionProvider messageDefinitionProvider) {
-    this.messageDefinitionProvider = messageDefinitionProvider;
-    md5Generator = new Md5Generator(messageDefinitionProvider);
-  }
-
-  public TopicDescription newFromType(String topicType) {
-    String md5Checksum = md5Generator.generate(topicType);
-    String topicDefinition = messageDefinitionProvider.get(topicType);
-    return new TopicDescription(topicType, topicDefinition, md5Checksum);
-  }
-
-  public boolean hasType(String topicType) {
-    return messageDefinitionProvider.has(topicType);
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicMessageFactory.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicMessageFactory.java
deleted file mode 100644
index b329386c..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/TopicMessageFactory.java
+++ /dev/null
@@ -1,30 +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.internal.message.topic;
-
-import org.ros.internal.message.DefaultMessageFactory;
-import org.ros.message.MessageDefinitionProvider;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class TopicMessageFactory extends DefaultMessageFactory {
-
-  public TopicMessageFactory(MessageDefinitionProvider messageDefinitionProvider) {
-    super(messageDefinitionProvider);
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/package-info.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/package-info.java
deleted file mode 100644
index d270dee4..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/topic/package-info.java
+++ /dev/null
@@ -1,22 +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 internal classes for representing topic messages.
- * <p>
- * These classes should _not_ be used directly outside of the org.ros package.
- */
-package org.ros.internal.message.topic;
\ No newline at end of file
diff --git a/rosjava_bootstrap/src/main/java/org/ros/message/Duration.java b/rosjava_bootstrap/src/main/java/org/ros/message/Duration.java
deleted file mode 100644
index d67c8c86..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/message/Duration.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Software License Agreement (BSD License)
- *
- *  Copyright (c) 2008, Willow Garage, Inc.
- *  All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions
- *  are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the following
- *     disclaimer in the documentation and/or other materials provided
- *     with the distribution.
- *   * Neither the name of Willow Garage, Inc. nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- *  POSSIBILITY OF SUCH DAMAGE.
- */
-
-package org.ros.message;
-
-/**
- * ROS Duration representation. Time and Duration are primitive types in ROS.
- * ROS represents each as two 32-bit integers: seconds and nanoseconds since
- * epoch.
- * 
- * http://www.ros.org/wiki/msg
- * 
- * @author Jason Wolfe
- * @author kwc@willowgarage.com (Ken Conley)
- * 
- */
-public class Duration implements Comparable<Duration> {
-
-  public static final Duration MAX_VALUE = new Duration(Integer.MAX_VALUE, 999999999);
-
-  public int secs;
-  public int nsecs;
-
-  public Duration() {
-  }
-
-  public Duration(int secs, int nsecs) {
-    this.secs = secs;
-    this.nsecs = nsecs;
-    normalize();
-  }
-
-  public Duration(double secs) {
-    this.secs = (int) secs;
-    this.nsecs = (int) ((secs - this.secs) * 1000000000);
-    normalize();
-  }
-
-  public Duration(Duration t) {
-    this.secs = t.secs;
-    this.nsecs = t.nsecs;
-  }
-
-  public Duration add(Duration d) {
-    return new Duration(secs + d.secs, nsecs + d.nsecs);
-  }
-
-  public Duration subtract(Duration d) {
-    return new Duration(secs - d.secs, nsecs - d.nsecs);
-  }
-
-  public static Duration fromMillis(long durationInMillis) {
-    int secs = (int) (durationInMillis / 1000);
-    int nsecs = (int) (durationInMillis % 1000) * 1000000;
-    return new Duration(secs, nsecs);
-  }
-
-  public static Duration fromNano(long durationInNs) {
-    int secs = (int) (durationInNs / 1000000000);
-    int nsecs = (int) (durationInNs % 1000000000);
-    return new Duration(secs, nsecs);
-  }
-
-  public void normalize() {
-    while (nsecs < 0) {
-      nsecs += 1000000000;
-      secs -= 1;
-    }
-    while (nsecs >= 1000000000) {
-      nsecs -= 1000000000;
-      secs += 1;
-    }
-  }
-
-  public long totalNsecs() {
-    return ((long) secs) * 1000000000 + nsecs;
-  }
-
-  public boolean isZero() {
-    return totalNsecs() == 0;
-  }
-
-  public boolean isPositive() {
-    return totalNsecs() > 0;
-  }
-
-  public boolean isNegative() {
-    return totalNsecs() < 0;
-  }
-
-  @Override
-  public String toString() {
-    return secs + ":" + nsecs;
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = 1;
-    result = prime * result + nsecs;
-    result = prime * result + secs;
-    return result;
-  }
-
-  @Override
-  /**
-   * Check for equality between Time objects.  
-   * equals() does not normalize Time representations, so fields must match exactly.
-   */
-  public boolean equals(Object obj) {
-    if (this == obj)
-      return true;
-    if (obj == null)
-      return false;
-    if (getClass() != obj.getClass())
-      return false;
-    Duration other = (Duration) obj;
-    if (nsecs != other.nsecs)
-      return false;
-    if (secs != other.secs)
-      return false;
-    return true;
-  }
-
-  @Override
-  public int compareTo(Duration d) {
-    if ((secs > d.secs) || ((secs == d.secs) && nsecs > d.nsecs)) {
-      return 1;
-    }
-    if ((secs == d.secs) && (nsecs == d.nsecs)) {
-      return 0;
-    }
-    return -1;
-  }
-
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/message/MessageDeclaration.java b/rosjava_bootstrap/src/main/java/org/ros/message/MessageDeclaration.java
deleted file mode 100644
index 57a846e5..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/message/MessageDeclaration.java
+++ /dev/null
@@ -1,108 +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.message;
-
-import com.google.common.base.Preconditions;
-
-/**
- * An {@link MessageIdentifier} and definition pair from which all qualities of
- * the message uniquely identifiable by the {@link MessageIdentifier} can be
- * derived.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageDeclaration {
-
-  private final MessageIdentifier messageIdentifier;
-  private final String definition;
-
-  public static MessageDeclaration of(String type, String definition) {
-    Preconditions.checkNotNull(type);
-    Preconditions.checkNotNull(definition);
-    return new MessageDeclaration(MessageIdentifier.of(type), definition);
-  }
-
-  /**
-   * @param messageIdentifier
-   *          the {@link MessageIdentifier}
-   * @param definition
-   *          the message definition
-   */
-  public MessageDeclaration(MessageIdentifier messageIdentifier, String definition) {
-    Preconditions.checkNotNull(messageIdentifier);
-    Preconditions.checkNotNull(definition);
-    this.messageIdentifier = messageIdentifier;
-    this.definition = definition;
-  }
-
-  public MessageIdentifier getMessageIdentifier() {
-    return messageIdentifier;
-  }
-
-  public String getType() {
-    return messageIdentifier.getType();
-  }
-
-  public String getPackage() {
-    return messageIdentifier.getPackage();
-  }
-
-  public String getName() {
-    return messageIdentifier.getName();
-  }
-
-  public String getDefinition() {
-    Preconditions.checkNotNull(definition);
-    return definition;
-  }
-
-  @Override
-  public String toString() {
-    return String.format("MessageDeclaration<%s>", messageIdentifier.toString());
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = 1;
-    result = prime * result + ((definition == null) ? 0 : definition.hashCode());
-    result = prime * result + ((messageIdentifier == null) ? 0 : messageIdentifier.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;
-    MessageDeclaration other = (MessageDeclaration) obj;
-    if (definition == null) {
-      if (other.definition != null)
-        return false;
-    } else if (!definition.equals(other.definition))
-      return false;
-    if (messageIdentifier == null) {
-      if (other.messageIdentifier != null)
-        return false;
-    } else if (!messageIdentifier.equals(other.messageIdentifier))
-      return false;
-    return true;
-  }
-}
\ No newline at end of file
diff --git a/rosjava_bootstrap/src/main/java/org/ros/message/MessageDefinitionProvider.java b/rosjava_bootstrap/src/main/java/org/ros/message/MessageDefinitionProvider.java
deleted file mode 100644
index b62715c7..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/message/MessageDefinitionProvider.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.message;
-
-import java.util.Collection;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public interface MessageDefinitionProvider {
-
-  /**
-   * @param messageType
-   *          the type of message definition to provide
-   * @return the message definition for the specified type
-   */
-  String get(String messageType);
-
-  /**
-   * @param messageType
-   *          the type of message definition to provide
-   * @return {@code true} if the definition for the specified type is available,
-   *         {@code false} otherwise
-   */
-  boolean has(String messageType);
-
-  Collection<String> getPackages();
-
-  /**
-   * @param pkg
-   *          the name of the package to filter on
-   * @return the {@link MessageIdentifier}s for all messages defined in the
-   *         specified package
-   */
-  Collection<MessageIdentifier> getMessageIdentifiersByPackage(String pkg);
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/message/MessageDeserializer.java b/rosjava_bootstrap/src/main/java/org/ros/message/MessageDeserializer.java
deleted file mode 100644
index 326c5101..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/message/MessageDeserializer.java
+++ /dev/null
@@ -1,31 +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.message;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- * 
- * @param <T>
- *          the type of message that this {@link MessageDeserializer} can
- *          deserialize
- */
-public interface MessageDeserializer<T> {
-  
-  T deserialize(ChannelBuffer buffer);
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/message/MessageFactory.java b/rosjava_bootstrap/src/main/java/org/ros/message/MessageFactory.java
deleted file mode 100644
index 9babe2f1..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/message/MessageFactory.java
+++ /dev/null
@@ -1,30 +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.message;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public interface MessageFactory {
-
-  /**
-   * @param messageType
-   *          the type of message to create
-   * @return a new message
-   */
-  <T> T newFromType(String messageType);
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/message/MessageFactoryProvider.java b/rosjava_bootstrap/src/main/java/org/ros/message/MessageFactoryProvider.java
deleted file mode 100644
index 24e8713d..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/message/MessageFactoryProvider.java
+++ /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.
- */
-
-package org.ros.message;
-
-public interface MessageFactoryProvider {
-
-  MessageFactory get(MessageIdentifier messageIdentifier);
-
-  boolean has(MessageIdentifier messageIdentifier);
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/message/MessageIdentifier.java b/rosjava_bootstrap/src/main/java/org/ros/message/MessageIdentifier.java
deleted file mode 100644
index 9895c39e..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/message/MessageIdentifier.java
+++ /dev/null
@@ -1,121 +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.message;
-
-import com.google.common.base.Preconditions;
-
-/**
- * Uniquely identifies a message.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- */
-public class MessageIdentifier {
-
-  private String type;
-  private String pkg;
-  private String name;
-
-  public static MessageIdentifier of(String pkg, String name) {
-    Preconditions.checkNotNull(pkg);
-    Preconditions.checkNotNull(name);
-    return new MessageIdentifier(pkg, name);
-  }
-
-  public static MessageIdentifier of(String type) {
-    Preconditions.checkNotNull(type);
-    // We're not using Preconditions.checkArgument() here because we want a
-    // useful error message without paying the performance penalty of
-    // constructing it every time.
-    if (!type.contains("/")) {
-      throw new IllegalArgumentException(String.format(
-          "Type name is invalid or not fully qualified: \"%s\"", type));
-    }
-    return new MessageIdentifier(type);
-  }
-
-  private MessageIdentifier(String type) {
-    this.type = type;
-  }
-
-  private MessageIdentifier(String pkg, String name) {
-    this.pkg = pkg;
-    this.name = name;
-  }
-
-  public String getType() {
-    if (type == null) {
-      // Using StringBuilder like this is about 40% faster than using the +
-      // operator.
-      StringBuilder stringBuilder = new StringBuilder(pkg.length() + name.length() + 1);
-      stringBuilder.append(pkg);
-      stringBuilder.append("/");
-      stringBuilder.append(name);
-      type = stringBuilder.toString();
-    }
-    return type;
-  }
-
-  private void splitType() {
-    String[] packageAndName = type.split("/", 2);
-    pkg = packageAndName[0];
-    name = packageAndName[1];
-  }
-
-  public String getPackage() {
-    if (pkg == null) {
-      splitType();
-    }
-    return pkg;
-  }
-
-  public String getName() {
-    if (name == null) {
-      splitType();
-    }
-    return name;
-  }
-
-  @Override
-  public String toString() {
-    return String.format("MessageIdentifier<%s>", type);
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = 1;
-    result = prime * result + ((type == null) ? 0 : type.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;
-    MessageIdentifier other = (MessageIdentifier) obj;
-    if (type == null) {
-      if (other.type != null)
-        return false;
-    } else if (!type.equals(other.type))
-      return false;
-    return true;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/message/MessageListener.java b/rosjava_bootstrap/src/main/java/org/ros/message/MessageListener.java
deleted file mode 100644
index 6fa0d1e9..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/message/MessageListener.java
+++ /dev/null
@@ -1,36 +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.message;
-
-/**
- * A callback for asynchronous message-related operations.
- * 
- * @author damonkohler@google.com (Damon Kohler)
- * 
- * @param <T>
- *          the type of message expected
- */
-public interface MessageListener<T> {
-
-  /**
-   * Called when a new message arrives.
-   * 
-   * @param message
-   *          the new message
-   */
-  void onNewMessage(T message);
-}
\ No newline at end of file
diff --git a/rosjava_bootstrap/src/main/java/org/ros/message/MessageSerializationFactory.java b/rosjava_bootstrap/src/main/java/org/ros/message/MessageSerializationFactory.java
deleted file mode 100644
index 8971583d..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/message/MessageSerializationFactory.java
+++ /dev/null
@@ -1,75 +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.message;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- */
-public interface MessageSerializationFactory {
-
-  /**
-   * @param messageType
-   *          the type of message that the new {@link MessageSerializer} should
-   *          serialize
-   * @return a new {@link MessageSerializer} for the provided message type
-   */
-  <T> MessageSerializer<T> newMessageSerializer(String messageType);
-
-  /**
-   * @param messageType
-   *          the type of message that the new {@link MessageDeserializer}
-   *          should deserialize
-   * @return a new {@link MessageDeserializer} for the provided message type
-   */
-  <T> MessageDeserializer<T> newMessageDeserializer(String messageType);
-
-  /**
-   * @param serviceType
-   *          the type of service that the new {@link MessageSerializer} should
-   *          serialize requests for
-   * @return a new {@link MessageSerializer} for requests to the provided
-   *         service type
-   */
-  <T> MessageSerializer<T> newServiceRequestSerializer(String serviceType);
-
-  /**
-   * @param serviceType
-   *          the type of service that the new {@link MessageDeserializer}
-   *          should deserialize requests for
-   * @return a new {@link MessageDeserializer} for requests to the provided
-   *         service type
-   */
-  <T> MessageDeserializer<T> newServiceRequestDeserializer(String serviceType);
-
-  /**
-   * @param serviceType
-   *          the type of service that the new {@link MessageSerializer} should
-   *          serialize responses for
-   * @return a new {@link MessageSerializer} for responses from the provided
-   *         service type
-   */
-  <T> MessageSerializer<T> newServiceResponseSerializer(String serviceType);
-
-  /**
-   * @param serviceType
-   *          the type of service that the new {@link MessageDeserializer}
-   *          should deserialize responses for
-   * @return a new {@link MessageDeserializer} for responses from the provided
-   *         service type
-   */
-  <T> MessageDeserializer<T> newServiceResponseDeserializer(String serviceType);
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/message/MessageSerializer.java b/rosjava_bootstrap/src/main/java/org/ros/message/MessageSerializer.java
deleted file mode 100644
index ffeb2180..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/message/MessageSerializer.java
+++ /dev/null
@@ -1,30 +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.message;
-
-import org.jboss.netty.buffer.ChannelBuffer;
-
-/**
- * @author damonkohler@google.com (Damon Kohler)
- * 
- * @param <T>
- *          the type of message that the {@link MessageSerializer} can serialize
- */
-public interface MessageSerializer<T> {
-
-  void serialize(T message, ChannelBuffer buffer);
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/message/Time.java b/rosjava_bootstrap/src/main/java/org/ros/message/Time.java
deleted file mode 100644
index 7805610c..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/message/Time.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Software License Agreement (BSD License)
- * 
- * Copyright (c) 2008, Willow Garage, Inc. All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer. * Redistributions in binary
- * form must reproduce the above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or other materials provided
- * with the distribution. * Neither the name of Willow Garage, Inc. nor the
- * names of its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-package org.ros.message;
-
-/**
- * ROS Time representation. Time and Time are primitive types in ROS. ROS
- * represents each as two 32-bit integers: seconds and nanoseconds since epoch.
- * 
- * @see "http://www.ros.org/wiki/msg"
- * 
- * @author Jason Wolfe
- * @author kwc@willowgarage.com (Ken Conley)
- */
-public class Time implements Comparable<Time> {
-
-  public int secs;
-  public int nsecs;
-
-  public Time() {
-    secs = 0;
-    nsecs = 0;
-  }
-
-  public Time(int secs, int nsecs) {
-    this.secs = secs;
-    this.nsecs = nsecs;
-    normalize();
-  }
-
-  public Time(double secs) {
-    this.secs = (int) secs;
-    this.nsecs = (int) ((secs - this.secs) * 1000000000);
-    normalize();
-  }
-
-  public Time(Time t) {
-    this.secs = t.secs;
-    this.nsecs = t.nsecs;
-  }
-
-  public Time add(Duration d) {
-    return new Time(secs + d.secs, nsecs + d.nsecs);
-  }
-
-  public Time subtract(Duration d) {
-    return new Time(secs - d.secs, nsecs - d.nsecs);
-  }
-
-  public Duration subtract(Time t) {
-    return new Duration(secs - t.secs, nsecs - t.nsecs);
-  }
-
-  public static Time fromMillis(long timeInMillis) {
-    int secs = (int) (timeInMillis / 1000);
-    int nsecs = (int) (timeInMillis % 1000) * 1000000;
-    return new Time(secs, nsecs);
-  }
-
-  public static Time fromNano(long timeInNs) {
-    int secs = (int) (timeInNs / 1000000000);
-    int nsecs = (int) (timeInNs % 1000000000);
-    return new Time(secs, nsecs);
-  }
-
-  @Override
-  public String toString() {
-    return secs + ":" + nsecs;
-  }
-
-  public double toSeconds() {
-    return totalNsecs() / 1e9;
-  }
-
-  public long totalNsecs() {
-    return ((long) secs) * 1000000000 + nsecs;
-  }
-
-  public boolean isZero() {
-    return totalNsecs() == 0;
-  }
-
-  public void normalize() {
-    while (nsecs < 0) {
-      nsecs += 1000000000;
-      secs -= 1;
-    }
-    while (nsecs >= 1000000000) {
-      nsecs -= 1000000000;
-      secs += 1;
-    }
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = 1;
-    result = prime * result + nsecs;
-    result = prime * result + secs;
-    return result;
-  }
-
-  /**
-   * Check for equality between {@link Time} objects.
-   * <p>
-   * This method does not normalize {@link Time} representations, so fields must match
-   * exactly.
-   */
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj) return true;
-    if (obj == null) return false;
-    if (getClass() != obj.getClass()) return false;
-    Time other = (Time) obj;
-    if (nsecs != other.nsecs) return false;
-    if (secs != other.secs) return false;
-    return true;
-  }
-
-  @Override
-  public int compareTo(Time t) {
-    if ((secs > t.secs) || ((secs == t.secs) && nsecs > t.nsecs)) {
-      return 1;
-    }
-    if ((secs == t.secs) && (nsecs == t.nsecs)) {
-      return 0;
-    }
-    return -1;
-  }
-}
diff --git a/rosjava_bootstrap/src/main/java/org/ros/message/package-info.java b/rosjava_bootstrap/src/main/java/org/ros/message/package-info.java
deleted file mode 100644
index 2f575611..00000000
--- a/rosjava_bootstrap/src/main/java/org/ros/message/package-info.java
+++ /dev/null
@@ -1,22 +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 representing messages.
- * 
- * @see <a href="http://ros.org/wiki/Messages">messages documentation</a>
- */
-package org.ros.message;
\ No newline at end of file
diff --git a/rosjava_messages/build.gradle b/rosjava_messages/build.gradle
deleted file mode 100644
index 5f8c702b..00000000
--- a/rosjava_messages/build.gradle
+++ /dev/null
@@ -1,38 +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_bootstrap')
-}
-
-
-task generateSources(type: JavaExec) {
-  def outputDir = "${buildDir}/generated-src"
-  outputs.dir file(outputDir)
-  args outputDir
-  classpath = configurations.runtime
-  main = 'org.ros.internal.message.GenerateInterfaces'
-}
-
-compileJava.source generateSources.outputs.files
-
-eclipse.classpath.file {
-  withXml {
-    // TODO(damonkohler): Avoid repetition of build directory. This is
-    // necessary because Eclipse wants a project relative path.
-    it.asNode().appendNode('classpathentry', [kind: 'src', path: 'build/generated-src'])
-  }
-}
-- 
GitLab