diff --git a/KEYS b/KEYS
new file mode 100644
index 0000000..17bdcde
--- /dev/null
+++ b/KEYS
@@ -0,0 +1,64 @@
+pub  1024D/AC92F123 2006-02-18 Anil Saldhana (Apache Committer) <anil@apache.org>
+sig 3       AC92F123 2006-02-18   Anil Saldhana (Apache Committer) <anil@apache.org>
+sub  1024g/644DBD41 2006-02-18
+sig         AC92F123 2006-02-18   Anil Saldhana (Apache Committer) <anil@apache.org>
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.2 (MingW32)
+
+mQGiBEP3WqARBADIITDiB27vTb9tQZnGdNWk+/H0R2G2J9Umj8/xez9IG1dvURrQ
+jWZkjpkymzlGcrcgj7O740ljQWYjEf3MkvJ/WfUu51cTJikyLL7Wgnyh3dhIxmeL
+nbVcyYdvStecQ4iX2zWltx5GYILu+rjVZ6bOgrXgAYadaif746Abvo8v3wCghWTF
+q+RH8dULmrUJferOkVMwIZcD/jwtZ+qGQwpl2+4QFqfityLMZ2TDaDDm8y1pLm5c
+tg9J7nBDihFdINmtPTpxHcJYfRX9YmKJAUVxVoa/BEWSKRNSsDCNENP+92ImEzYc
+4a3pNhzZGtnYKLSNqjrTqnU8sBX8MVWVil/lJ2mO7tL1U7SvrAVCPEPA5tj8sToo
+gqTPA/wNiNSfwkQYCyzSelppMgpWxLWnUyq5k+LxtWR2IgefkPwkf4gCIDtZKkx+
+jdD2361gqU0g2CYt4Ad8EJKGXli9M0CXylyaaCR9Bsn1KwtXV1AXxa535D/xyp1G
+MJeYnMlg8YyhIt7+OwtH/n1FQkNThcqmHYm43FZxj/RCMS/dlbQyQW5pbCBTYWxk
+aGFuYSAoQXBhY2hlIENvbW1pdHRlcikgPGFuaWxAYXBhY2hlLm9yZz6IWwQTEQIA
+GwUCQ/daoAYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRA8rZlfrJLxI9DbAJ99arVX
+mvow7fjSe/WrKGKib/agggCdEc/sUfo4hVgQfrJP1GoraEGK19m5AQ0EQ/daohAE
+AJiq3/pE0x2XIitOW3IfCV+Md3osjtzA4uSQlKsIF68PCVXAqDmtBlPDoD6cVThD
+Bo73CDYxOFGodH4OSKq2FhsymvqVIaOvur/ATDLh/0S5lhpDwqCFHepEEgBQZ+qv
+TNRTd9XuSaNpQECWF8UAX1p1FgkJLGyd19nKEh423UGTAAMFA/9nbjGpk5IJajdW
+0zZ3Epiiat3RzmIHwX83kyJPOvUqwc5rY6xnRKc224LUV08MT1s7Y48xsMsveZit
+eixaaKDXtFy0pOB1L9AE1T6mwwGbGT6TfldtIr810bTMUEohIWrM1aIrQVT0RMAQ
+8RTP3UELOrlSbexFZVfzTTno56HASYhGBBgRAgAGBQJD91qiAAoJEDytmV+skvEj
+vqUAn2qE/xPloxPBFN0XdZeTBdf5DOgQAJ4/7DX2/YlQ3iM4ymO22FuBhKhuDQ==
+=R+XP
+-----END PGP PUBLIC KEY BLOCK-----
+pub   1024D/9242E99E 2008-08-27 [expires: 2009-08-27]
+uid                  Kurt T Stam (Apache Developer) <kstam@apache.org>
+sig 3        9242E99E 2008-08-27  Kurt T Stam (Apache Developer) <kstam@apache.org>
+sub   2048g/16A1F7D9 2008-08-27 [expires: 2009-08-27]
+sig          9242E99E 2008-08-27  Kurt T Stam (Apache Developer) <kstam@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.8 (Darwin)
+
+mQGiBEi15YMRBADh2mXdLXnNdeYEwVCkvXRwIZ2YZ/ZxavJ1qLUH4VtRQoIdVlHM
+zjcnKn+I0lAHyD7AGE0wEYx+m7VIbTobWewq/JDxsgzcTfP0LKs1nkvuuglNCoht
+DosYmE1fVYpeZXNoT96QufQHkPH57NfieemVD824l/roJ1D9cFNO9TmYMwCguTTv
+WdVidlxMPZ+vQ3kBDFpCd/8D/R76LfgLN1Q+9xlEfN4/SLVi6ez9cFiELsFyC7Oh
+H+FGfQYytRT9/vavkZSCT0XEtP5QoJpkQGvJCM6TU7jUUonQISwhqpGudjfdKmyp
+TQOjQA1doq6Jy6vSmof57PgD8vvGvnWz0CA8xYuxfqEGAukHUdd+Iq1n6K72ftHG
+oP7jBACTXpuxIBCFjHq479isD7BkI6Y/dijo86/iHBDxAGEMg5LfsMI5vSjq2Imi
+FWZmeuviUhrZHkxeCxo3ENfwmJYuMXSu9aBf+vsTivO95ulpNLCKBIYnFItV9Ehv
+/YUnHq/X2A6qOtquO2gHVg7dq0fExoIHJUrA4mIQz2MmLJVqabQxS3VydCBUIFN0
+YW0gKEFwYWNoZSBEZXZlbG9wZXIpIDxrc3RhbUBhcGFjaGUub3JnPohmBBMRAgAm
+BQJIteWDAhsDBQkB4TOABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQdjn0gpJC
+6Z6K1QCeMu6Ct+Oa6x67b2bcZm+9oh92g2cAoILwRI887D4REmzY8/TmvROsTfY1
+uQINBEi15YMQCACJrT+XLScEPmaIIvby8kRlgJEUNEsPa4mQq7svLsuhpWXtnE0I
+7RRPTy7ttuGkAWJdWRAvBJC3ZgLiRLjQbo2d4S30HNSRrjx3groRkslYkE0n+B6v
+idllOP/JiUzMtbDq5vVLRuLcktWfNuQvj5Db5mRm9Vm8UICy1DmUo9NW5VdBqLJB
+eDZoGn7m2MqdV8SMovskC/Ip1ZT6djGLsSozIWESP0GSnnyGr8SduwDBRy36scSx
+tPK4XLPhWhbwK2wA1e4vOnPgmV7p1V5c+7qw4iBejWWmFz7c3RomQckK/30GV7I3
+tcdcwlr/+iMYysJVZz7XctfzpGRPkd4HShY7AAMGB/9ZwxqNkD5qk3vupTmpcodg
+ujf4oD8PJoP673DLDGBLwlK81r9bW4I1PKHFQe6l3XJg0qTzZvjf809eW987guaU
+XEjv+i0wjZQkNob1wRTGjtCXSHCO5xa8vJApoFbMWxRz94bH+nlbP+gHXXd26GmB
+5fC4WyXODFWNoadyz/dVXrbo+JXuAPauB6P+Ndn4NNjBOMhj2Q24H+OCokA0fK9R
+gSsrU+23DPMJiqXHKEEOU7NMMuWUwBwkvTkd7gmuMk6QKrfH4nZfWoQEMqWycDM5
+tJPFCizvIYVXvuZZo5SF1EAAJQ98gIM9SmEExhgorfeekcgIB1NvB5v6ROYdcByB
+iE8EGBECAA8FAki15YMCGwwFCQHhM4AACgkQdjn0gpJC6Z611ACgoBYBiPkeKig7
+f+bKmTLT7oLzf+sAoIeCfFt8vA6ovF3RkvN05O65WPcD
+=5V68
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/LICENSE-2.0 b/LICENSE-2.0
new file mode 100644
index 0000000..43fe17c
--- /dev/null
+++ b/LICENSE-2.0
@@ -0,0 +1,248 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+Apache CXF includes a number of components and libraries with separate 
+copyright notices and license terms. Your use of those components are 
+subject to the terms and conditions of the following licenses. 
+
+
+
+AOP alliance (http://aopalliance.sourceforge.net) aopalliance:aopalliance:jar:1.0
+    License: Public Domain 
+
+Legion of the Bouncy Castle Java Cryptography APIs (http://www.bouncycastle.org/java.html) bouncycastle:bcprov-jdk15:jar:140
+    License: Bouncy Castle License  (http://www.bouncycastle.org/licence.html)
+
+Sun JAXB Reference Implementation Runtime  com.sun.xml.bind:jaxb-impl:jar:2.0.5:compile
+    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.sun.com/cddl/cddl.html)
+
+Sun JAXB Reference Implementation Tools  com.sun.xml.bind:jaxb-xjc:jar:2.0:compile
+    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.sun.com/cddl/cddl.html)
+
+Sun SAAJ Reference Implementation  com.sun.xml.messaging.saaj:saaj-impl:jar:1.3:compile
+    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.sun.com/cddl/cddl.html)
+
+Java Architecture for XML Binding (JAXB API)  javax.xml.bind:jaxb-api:jar:2.0:compile
+    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.sun.com/cddl/cddl.html)
+
+Sun SAAJ API  javax.xml.soap:saaj-api:jar:1.3:compile
+    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.sun.com/cddl/cddl.html)
+
+Java API for XML-Based Web Services (JAX-WS API)  javax.xml.ws:jaxws-api:jar:2.0:compile
+    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.sun.com/cddl/cddl.html)
+
+JDOM  jdom:jdom:jar:1.0:compile
+    License: Modified Apache Software License  (licenses/jdom.txt)
+
+Jetty Server (http://jetty.mortbay.org) org.mortbay.jetty:jetty:jar:6.1.9
+    License: Apache License Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0)
+
+Jetty Utilities (http://jetty.mortbay.org) org.mortbay.jetty:jetty-util:jar:6.1.9
+    License: Apache License Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0)
+
+Rhino (http://www.mozilla.org/rhino/) rhino:js:jar:1.6R5
+    License: Mozilla Public License version 1.1  (http://www.mozilla.org/MPL/MPL-1.1.html)
+
+WSDL4J (http://sf.net/projects/wsdl4j) wsdl4j:wsdl4j:jar:1.6.2
+    License: CPL  (http://www.opensource.org/licenses/cpl1.0.txt)
+
diff --git a/README b/README
new file mode 100644
index 0000000..35e363f
--- /dev/null
+++ b/README
@@ -0,0 +1,190 @@
+-- THIS DOCUMENT IS A WORK IN PROGRESS --
+
+Welcome to the Apache Scout Project!
+
+INTRODUCTION
+
+  While this effort can be considered a project in and of
+  itself it will have a dependency on the jUDDI Registry
+  project.  This dependency is covered in the "RELATIONSHIP 
+  WITH THE jUDDI PROJECT" section below.
+
+
+PROJECT GOALS
+
+  The purpose of the JAXR specification is to give Java/J2EE 
+  developers a common standard API to access various web 
+  services registries. This is simiar in function to the way 
+  the JDBC API provides a common API for accessing different 
+  database products.
+
+  The JAXR specification describes two types of providers 
+  each offerring different levels of support for interacting 
+  with the two popular registry specifications in use today,
+  UDDI and ebXML.
+  
+  A type 0 providers will offer support for accessing UDDI 
+  registries and type 1 providers support access to both UDDI 
+  AND ebXML registries. The goal of this project is to 
+  implement a type 0 provider.
+
+
+RELATIONSHIP TO THE JUDDI REGISTRY PROJECT
+
+  As described in the PROJECT GOALS section above, the 
+  JAXR specification indicates that a type 0 provider is 
+  used to support interaction with UDDI registries. 
+  
+  A large portion of the development effort for this 
+  project will center around building a bridge between 
+  the standard JAXR API interface (jaxr.jar) and a UDDI 
+  client library such as UDDI4j.
+  
+  This is where the depenedency on jUDDI comes into play. 
+  It's a little known fact that jUDDI is not only a UDDI 
+  Registry but can also act as a UDDI client. 
+  
+  Since the jUDDI Registry must have the ability to recieve 
+  SOAP requests, deserialize them into Java objects and 
+  then serialize and return SOAP responses we realized
+  that we could leverage this existing functionality to
+  quickly produce a UDDI client which we did.
+  
+  A significant side-benefit of using the jUDDI client
+  in our JAXR provider is that any issues or bugs 
+  discovered and fixed while using the jUDDI Proxy will 
+  directly improve the quality of the jUDDI Registry.
+  
+
+BUILDING THE JUDDI JAXR PROVIDER
+
+  Apache Scout is a maven project that is built using the
+  multiproject plugin. All dependencies are included or
+  are downloaded during the build. The quickest way to
+  start is, in the root directory, to type
+
+  mvn package
+
+  This will build all of the modules and install them in
+  your local maven repository.
+
+  To clean up a build, use
+
+  mvn clean
+
+SUPPORT
+
+  You'll find documentation for this project in the docs/ 
+  directory.
+
+  Also, read the RELEASE NOTES below in for details on the 
+  current release.
+
+  Thanks from the Scout development team for downloading 
+  the package; help us make it better by sending comments 
+  to scout-dev@ws.apache.org. Subscribe to this list by 
+  sending a message to the following email address:
+  
+    scout-dev-subscribe@ws.apache.org
+  
+
+
+  
+Release Notes - Scout - Version 1.0
+
+Bug
+
+    * [SCOUT-21] - can't configure transport class property using the properties in the factory
+    * [SCOUT-22] - ServiceBindings are not populated when quering for a organization or service
+    * [SCOUT-55] - Scout ignores ownership of registry objects when querying with BusinessQueryManager.getRegistryObjects(LifeCycleManager.ORGANIZATION)
+    * [SCOUT-61] - ScoutJaxrUddiHelper returns BindingTemplate without AccessPoint/HostingRedirector
+    * [SCOUT-64] - Missing / moved DOAP file
+    * [SCOUT-67] - ClassCastException in BusinessQueryManager.getRegistryObject(...,LifeCycleManager.SERVICE)
+    * [SCOUT-68] - java.lang.NullPointerException in ScoutUddiJaxrHelper.getServiceBinding(ScoutUddiJaxrHelper.java:437)
+    * [SCOUT-70] - JAXR060 throws stack traces
+    * [SCOUT-71] - TModelBag a required element in findBinding
+    * [SCOUT-75] - Need lazy loading of Organization from ServiceImpl
+
+Improvement
+
+    * [SCOUT-57] - BusinessQueryManagerTest only tests one of the methods of BusinessQueryManager
+
+New Feature
+
+    * [SCOUT-20] - Enabling RMI access to jUDDI
+
+
+  Release Notes - Scout - Version 1.0rc2
+** Bug
+    * [SCOUT-47] - tmodel_instance_info row not created
+    * [SCOUT-48] - ServiceBinding objects do not have their SpecificationLink objects saved in UDDI.
+    * [SCOUT-50] - Classifications array should be of size 0 if none are found
+    * [SCOUT-52] - Refactor the unittests to make it easier to write and maintain them
+    * [SCOUT-53] - Code to create associations is missing.
+    * [SCOUT-54] - When querying for organizations (JAXR), the email, phone number, and postal address collections of the primary contact are empty although there is data in them
+    * [SCOUT-56] - Service descriptions and corresponding service bindings are not returned when querying by service	
+    * [SCOUT-63] - Set TModelInstanceDetails in getBindingTemplateFromJAXRSB even if slcol is null or empty
+
+** Improvement
+
+** New Feature
+    * [SCOUT-51] - Test scout against other UDDIs (besides just jUDDI)
+                          
+  Release Notes - Scout - Version 1.0rc1
+
+** Bug
+    * [SCOUT-23] - Classification are not saved.
+    * [SCOUT-25] - FindBinding does not work + patch
+    * [SCOUT-26] - Removing a service does not remove the service + patch
+    * [SCOUT-28] - XmlBeans conversion compiles but is non-functional
+    * [SCOUT-29] - AuthTokenImpl.getAuthInfo() doesn't seem to work correctly
+    * [SCOUT-30] - Classifications are ignored when preforming finds.
+    * [SCOUT-31] - Fix scout maven 1 build issue so that the dependency jars can be downloaded automatically
+    * [SCOUT-32] - Fix NPE at getConcept
+    * [SCOUT-33] - Should throw exception when level 1 feature is accessed in RegistryEntryImpl.java
+    * [SCOUT-34] - DiscoveryURLs aren't constructed correctly when there is more than 1 discoveryURLs for a businessEntity
+    * [SCOUT-35] - Should use hashset for the collection in BulkResponseImpl to not allow duplicate 
+    * [SCOUT-36] - minor update to get scout maven 2 build pass the error in download juddi snapshot
+    * [SCOUT-40] - InternationalString is not handled correctly
+    * [SCOUT-41] - Results not returned in the given order
+    * [SCOUT-44] - port fixes for scout 8 to trunk
+    * [SCOUT-45] - port scout 19 to trunk
+    * [SCOUT-46] - port scout 10 to trunk
+
+** Improvement
+    * [SCOUT-9] - Separation of Apache Scout and jUDDI
+
+** New Feature
+    * [SCOUT-18] - Embedded mode execution
+
+** Task
+    * [SCOUT-27] - Update Tests with embedded juddi setup
+    * [SCOUT-37] - Cleanup code to get rid of warnings
+    * [SCOUT-38] - Produce website from the maven2 build
+    * [SCOUT-39] - Integrate all sample code in unittests
+    * [SCOUT-42] - apply fixes on 0.7 branches to the trunk
+
+
+Release Notes - Scout - Version v0.7
+
+** Bug
+    * [SCOUT-4] - Level 1 methods in PersonName must throw UnsupportedCapabilityException
+    * [SCOUT-6] - Null pointer exception when creating an association
+    * [SCOUT-7] - NullPointerException when a BusinessEntity does not have services
+    * [SCOUT-8] - Unable to use InternationalString in BusinessQueryManager.findOrganizations() (ClassCastException)
+    * [SCOUT-10] - Publish requests to JUDDI do not include ServiceBinding information.
+    * [SCOUT-15] - RegistryEntry should throw UnsupportedCapabilityException for level 0
+    * [SCOUT-19] - ServiceBinding.getSpecificationLinks should not return null
+
+** Improvement
+    * [SCOUT-11] - JAXR Classifications are not processed
+
+** Task
+    * [SCOUT-1] - Implement saveXXX Methods in BusinessLifeCycleManager
+    * [SCOUT-2] - Implement deleteXXX methods in BusinessLifeCycleManager
+    * [SCOUT-3] - Implement findXXX methods in BusinessQueryManager
+    * [SCOUT-5] - Predefined Enumerations
+    * [SCOUT-13] - Better Logging capabilities
+    * [SCOUT-16] - Maven2 migration
+
+  
diff --git a/scout.iml b/scout.iml
deleted file mode 100644
index 1979712..0000000
--- a/scout.iml
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module version="4" relativePaths="true" type="JAVA_MODULE">
-  <component name="ModuleRootManager" />
-  <component name="NewModuleRootManager">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <exclude-output />
-    <exclude-exploded />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="false" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../../../.maven/repository/scout/jars/jaxr-api-1.0-SNAPSHOT.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../../../.maven/repository/sun-javamail/jars/activation-.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../../../apache-ant-1.6.2/lib/ant-junit.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../../../apache-ant-1.6.2/lib/junit.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module" module-name="jaxr-api" />
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../../../.maven/repository/commons-logging/jars/commons-logging-SNAPSHOT.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../../../.maven/repository/axis/jars/axis-jaxrpc-1.2-RC1.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../../../.maven/repository/axis/jars/axis-saaj-1.2-RC1.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../../../.maven/repository/axis/jars/axis-wsdl4j-1.2-RC1.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../../../.maven/repository/commons-discovery/jars/commons-discovery-SNAPSHOT.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module" module-name="juddi" />
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../../../.maven/repository/axis/jars/axis-1.2-RC1.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="library" name="junit-3.8.1" level="application" />
-    <orderEntryProperties />
-  </component>
-</module>
-
