diff --git a/.project b/.project
new file mode 100644
index 0000000000000000000000000000000000000000..30e95c1635f8c915aa82405389161a5a74126b92
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>rosjava_tools</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.python.pydev.PyDevBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.python.pydev.pythonNature</nature>
+	</natures>
+</projectDescription>
diff --git a/.pydevproject b/.pydevproject
new file mode 100644
index 0000000000000000000000000000000000000000..c9648ba1d0173844007c4d1307f8c5b00309cc1b
--- /dev/null
+++ b/.pydevproject
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?eclipse-pydev version="1.0"?>
+
+<pydev_project>
+<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
+<path>/rosjava_tools/src</path>
+</pydev_pathproperty>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
+</pydev_project>
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f6973f7ec4f80f30942dbb1a029507732b697eca
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,33 @@
+##############################################################################
+# CMake
+##############################################################################
+
+cmake_minimum_required(VERSION 2.8.3)
+project(rosjava_tools)
+
+##############################################################################
+# Catkin
+##############################################################################
+
+find_package(catkin REQUIRED)
+catkin_package(CFG_EXTRAS rosjava.cmake)
+
+catkin_python_setup()
+
+##############################################################################
+# Project Settings
+##############################################################################
+
+# Graveyarded for now
+#install(
+#    PROGRAMS 
+#        scripts/android_post_build_script
+#    DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
+#    )
+
+#install(DIRECTORY launch
+#  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
+#
+#install(DIRECTORY param
+#  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
+
diff --git a/cmake/rosjava.cmake.em b/cmake/rosjava.cmake.em
new file mode 100644
index 0000000000000000000000000000000000000000..49819f8e92e6559a38311f025098dc96daf25304
--- /dev/null
+++ b/cmake/rosjava.cmake.em
@@ -0,0 +1,70 @@
+# Scans down directories till it finds the gradle wrapper.
+# It sets the following variables
+# - ${PROJECT_NAME}_gradle_BINARY
+macro(find_gradle)
+    find_file(${PROJECT_NAME}_gradle_BINARY gradlew
+          PATHS 
+          ${CMAKE_CURRENT_SOURCE_DIR}
+          ${CMAKE_CURRENT_SOURCE_DIR}/..
+          ${CMAKE_CURRENT_SOURCE_DIR}/../..
+          NO_DEFAULT_PATH
+          )
+     if(NOT ${PROJECT_NAME}_gradle_BINARY)
+         message(FATAL_ERROR "Could not find the gradle wrapper in this directory or below.")
+     endif()
+endmacro()
+
+# Scans down directories till it finds the gradle project settings. 
+# It sets the following variables
+# - ${PROJECT_NAME}_gradle_ROOT
+macro(find_gradle_repo_root)
+    find_file(${PROJECT_NAME}_gradle_SETTINGS settings.gradle
+          PATHS 
+          ${CMAKE_CURRENT_SOURCE_DIR}
+          ${CMAKE_CURRENT_SOURCE_DIR}/..
+          ${CMAKE_CURRENT_SOURCE_DIR}/../..
+          NO_DEFAULT_PATH
+          )
+     if(NOT ${PROJECT_NAME}_gradle_SETTINGS)
+         message(FATAL_ERROR "Could not find the settings.gradle file in this directory or below.")
+     endif()
+     get_filename_component(${PROJECT_NAME}_gradle_ROOT ${${PROJECT_NAME}_gradle_SETTINGS} PATH)
+endmacro()
+
+# Calls the gradle wrapper to compile just the package
+# that it is called in. 
+# Experimental - probably better to leave gradle handle entire repos.
+macro(catkin_rosjava_setup task)
+    find_gradle()
+    add_custom_target(gradle-${PROJECT_NAME}
+        ALL
+        COMMAND ${CATKIN_ENV} ${${PROJECT_NAME}_gradle_BINARY} ${task}
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    )
+    catkin_package_xml()
+    foreach(depends in ${${PROJECT_NAME}_BUILD_DEPENDS})
+        if(TARGET gradle-${depends})
+            #message(STATUS "Adding dependency gradle-${depends}")
+            add_dependencies(gradle-${PROJECT_NAME} gradle-${depends})
+        endif()
+    endforeach()
+endmacro()
+
+# Calls the root level gradle wrapper to run the multi-project 
+# configuration and compile the entire suite.
+macro(catkin_rosjava_repo_setup task)
+    find_gradle()
+    find_gradle_repo_root()
+    add_custom_target(gradle-${PROJECT_NAME}
+        ALL
+        COMMAND ${CATKIN_ENV} ${${PROJECT_NAME}_gradle_BINARY} ${task}
+        WORKING_DIRECTORY ${${PROJECT_NAME}_gradle_ROOT}
+    )
+    catkin_package_xml()
+    foreach(depends in ${${PROJECT_NAME}_BUILD_DEPENDS})
+        if(TARGET gradle-${depends})
+            #message(STATUS "Adding dependency gradle-${depends}")
+            add_dependencies(gradle-${PROJECT_NAME} gradle-${depends})
+        endif()
+    endforeach()
+endmacro()
diff --git a/package.xml b/package.xml
new file mode 100644
index 0000000000000000000000000000000000000000..026b2f9e1dcb869e592fc5b6a8e0a662cff83e5e
--- /dev/null
+++ b/package.xml
@@ -0,0 +1,24 @@
+<package>
+  <name>rosjava_tools</name>
+  <version>0.1.0</version>
+  <description>
+    Simple tools and catkin modules for rosjava development. 
+  </description>
+  <maintainer email="d.stonier@gmail.com">Daniel Stonier</maintainer>
+  <license>BSD</license>
+  <url type="website">http://ros.org/wiki/rosjava_tools</url>
+  <url type="repository">https://github.com/ros-java/rosjava_tools</url>
+  <url type="bugtracker">https://github.com/ros-java/rosjava_tools/issues</url>
+  <author email="d.stonier@gmail.com">Daniel Stonier</author>
+
+  <buildtool_depend>catkin</buildtool_depend>
+
+  <build_depend>rospkg</build_depend>
+  <build_depend>rospy</build_depend>
+  <build_depend>java</build_depend>
+  <build_depend>ant</build_depend>
+  <run_depend>rospkg</run_depend>
+  <run_depend>rospy</run_depend>
+  <run_depend>java</run_depend>
+  <run_depend>ant</run_depend>
+</package>
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000000000000000000000000000000000000..e134ddeface3e851bc057bd259327e615bf9809f
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+
+from distutils.core import setup
+from catkin_pkg.python_setup import generate_distutils_setup
+
+d = generate_distutils_setup(
+    packages=['rosjava_tools'],
+    package_dir={'': 'src'},
+    #scripts=['scripts/android_generate_project_properties',
+    #         'scripts/catkin_init_android_repo',
+    #         'scripts/catkin_create_android_pkg',
+    #         'scripts/catkin_create_android_library_pkg'
+    #        ],
+    #package_data = {'rosjava_tools': [
+    #       'gradle/*',
+    #       'gradle/gradle/wrapper/*'
+    #       'templates/android_package/*',
+    #       'templates/init_repo/*',
+    #    ]},
+    requires=['rospy' 'rospkg']
+)
+
+setup(**d)