diff --git a/jpa-moxy/round-trip/bin/.gitignore b/jpa-moxy/round-trip/bin/.gitignore
new file mode 100644
index 0000000..5e56e04
--- /dev/null
+++ b/jpa-moxy/round-trip/bin/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/moxy/dynamic/flickr/.project b/jpa-moxy/round-trip/bin/.project
similarity index 94%
copy from moxy/dynamic/flickr/.project
copy to jpa-moxy/round-trip/bin/.project
index f1c7336..15966b8 100644
--- a/moxy/dynamic/flickr/.project
+++ b/jpa-moxy/round-trip/bin/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>flickr</name>
+	<name>round-trip</name>
 	<comment></comment>
 	<projects>
 	</projects>
diff --git a/moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/AlchemyAccessor.java b/moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/AlchemyAccessor.java
deleted file mode 100644
index b49fa7e..0000000
--- a/moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/AlchemyAccessor.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
- * which accompanies this distribution.
- *
- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
- * and the Eclipse Distribution License is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- ******************************************************************************/
-package eclipselink.example.moxy.dynamic.flickr;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.StringTokenizer;
-
-import com.likethecolor.alchemy.api.Client;
-import com.likethecolor.alchemy.api.call.RankedConceptsCall;
-import com.likethecolor.alchemy.api.call.type.CallTypeText;
-import com.likethecolor.alchemy.api.entity.ConceptAlchemyEntity;
-import com.likethecolor.alchemy.api.entity.Response;
-import com.likethecolor.alchemy.api.params.ConceptParams;
-
-public class AlchemyAccessor {
-
-    /**
-     * This method uses the AlchemyAPI web service to determine the "concepts"
-     * contained in the headline. It does not use EclipseLink and is used solely
-     * for the purpose of this example application.
-     * 
-     * @see <a href="http://www.alchemyapi.com">AlchemyAPI</a>
-     */
-    @SuppressWarnings("unchecked")
-    public String extractConcepts(String postTitle) {
-        try {
-            Client client = new Client(ALCHEMY_KEY);
-
-            ConceptParams params = new ConceptParams();
-            params.setMaxRetrieve(ALCHEMY_CONCEPTS_TO_RETURN);
-
-            CallTypeText callType = new CallTypeText(postTitle);
-            RankedConceptsCall call = new RankedConceptsCall(callType, params);
-            Response<ConceptAlchemyEntity> response = client.call(call);
-
-            String concepts = "";
-
-            Iterator<ConceptAlchemyEntity> it = response.iterator();
-            if (!it.hasNext()) {
-                // If Alchemy didn't find any concepts, use string length
-                // algorithm
-                return extractKeywords(postTitle);
-            } else {
-                while (it.hasNext()) {
-                    ConceptAlchemyEntity alchemyEntity = it.next();
-                    concepts += alchemyEntity.getConcept();
-                    if (it.hasNext()) {
-                        concepts += ",";
-                    }
-                }
-            }
-
-            concepts = concepts.replace(" ", "+");
-
-            return concepts;
-        } catch (Exception e) {
-            return extractKeywords(postTitle);
-        }
-    }
-
-    private String extractKeywords(String postTitle) {
-        StringTokenizer tokenizer = new StringTokenizer(postTitle, ",.!?()[]'\"- \t\n\r\f");
-
-        ArrayList<String> words = new ArrayList<String>();
-
-        while (tokenizer.hasMoreElements()) {
-            words.add(tokenizer.nextToken());
-        }
-
-        // Sort words, longest one first
-        Collections.sort(words, new StringLengthComparator());
-
-        String keywords = null;
-        if (words.size() > 1) {
-            keywords = words.get(0) + "," + words.get(1);
-        } else {
-            keywords = words.get(0);
-        }
-
-        return keywords;
-    }
-
-    private class StringLengthComparator implements Comparator<String> {
-        public int compare(String o1, String o2) {
-            if (o1.length() > o2.length()) {
-                return -1;
-            } else if (o1.length() < o2.length()) {
-                return 1;
-            } else {
-                return 0;
-            }
-        }
-    }
-
-    private final int ALCHEMY_CONCEPTS_TO_RETURN = 2;
-    private final String ALCHEMY_KEY = "/META-INF/a.key";
-
-}
\ No newline at end of file
diff --git a/moxy/dynamic/flickr/src/main/resources/META-INF/a.key b/moxy/dynamic/flickr/src/main/resources/META-INF/a.key
deleted file mode 100644
index 8f15722..0000000
--- a/moxy/dynamic/flickr/src/main/resources/META-INF/a.key
+++ /dev/null
@@ -1 +0,0 @@
-ae118f51d3ec0bf619166d70b3d7041fecc9ff87
\ No newline at end of file
diff --git a/moxy/dynamic/flickr/.classpath b/moxy/social-binding/.classpath
similarity index 100%
rename from moxy/dynamic/flickr/.classpath
rename to moxy/social-binding/.classpath
diff --git a/moxy/dynamic/flickr/.project b/moxy/social-binding/.project
similarity index 94%
rename from moxy/dynamic/flickr/.project
rename to moxy/social-binding/.project
index f1c7336..20dedc4 100644
--- a/moxy/dynamic/flickr/.project
+++ b/moxy/social-binding/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>flickr</name>
+	<name>social-binding</name>
 	<comment></comment>
 	<projects>
 	</projects>
diff --git a/moxy/dynamic/flickr/.settings/org.eclipse.core.resources.prefs b/moxy/social-binding/.settings/org.eclipse.core.resources.prefs
similarity index 100%
rename from moxy/dynamic/flickr/.settings/org.eclipse.core.resources.prefs
rename to moxy/social-binding/.settings/org.eclipse.core.resources.prefs
diff --git a/moxy/dynamic/flickr/.settings/org.eclipse.jdt.core.prefs b/moxy/social-binding/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from moxy/dynamic/flickr/.settings/org.eclipse.jdt.core.prefs
rename to moxy/social-binding/.settings/org.eclipse.jdt.core.prefs
diff --git a/moxy/dynamic/flickr/.settings/org.eclipse.m2e.core.prefs b/moxy/social-binding/.settings/org.eclipse.m2e.core.prefs
similarity index 100%
rename from moxy/dynamic/flickr/.settings/org.eclipse.m2e.core.prefs
rename to moxy/social-binding/.settings/org.eclipse.m2e.core.prefs
diff --git a/moxy/dynamic/flickr/README.md b/moxy/social-binding/README.md
similarity index 79%
rename from moxy/dynamic/flickr/README.md
rename to moxy/social-binding/README.md
index eae8c06..c6bd59b 100644
--- a/moxy/dynamic/flickr/README.md
+++ b/moxy/social-binding/README.md
@@ -1,7 +1,9 @@
-EclipseLink Dynamic MOXy Flickr Example
+EclipseLink Social-Binding Example
 ---------------------------------------
 
-This example will demonstrate how to use MOXy's Dynamic JAXB features to work with public JSON and XML feeds, without having to create concrete Java classes. The following concepts are demonstrated:
+This example will demonstrate how to use EclipseLink MOXyto work with public JSON and XML feeds using a declarative binding approach. 
+
+The following concepts are demonstrated:
 
 * Mapping to JSON and XML data without writing or generating concrete Java classes
 * Using multiple MOXy metadata files to modularize your metadata
@@ -14,4 +16,4 @@
 
 The example application uses Dynamic MOXy to read a JSON stream from Reddit, an XML stream from Flickr, and uses the data from both to create an HTML file.
 
-[http://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic/Flickr](http://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic/Flickr)
\ No newline at end of file
+[http://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic/Flickr](http://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic/Flickr)
diff --git a/moxy/social-binding/output.html b/moxy/social-binding/output.html
new file mode 100644
index 0000000..63831ea
--- /dev/null
+++ b/moxy/social-binding/output.html
@@ -0,0 +1,146 @@
+<html>
+   <head>
+      <title>EclipseLink MOXy - Dynamic JAXB</title>
+      <link href="style.css" rel="stylesheet" type="text/css" media="screen"/>
+   </head>
+   <body>
+      <p>
+         <h1>Reddit /software - Today's Top Posts</h1>
+         <p>
+            <div id="redditPost">
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlTextLink">
+                  <a href="http://www.reddit.com/r/software/comments/1g5vp5/a_good_suggestion_for_softwarefreeware_that/">a good suggestion for software/freeware that allows me to control a PC remotely?</a>
+               </span>
+            </div>
+         </p>
+         <p>
+            <div id="flickrResults">
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlText">
+                  <p>
+                     <small>Recent Uploads tagged suggestion and software</small>
+                  </p>
+               </span>
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlImageLink">
+                  <a href="http://www.flickr.com/photos/blacktar/5354218744/">
+                     <img src="http://farm6.staticflickr.com/5083/5354218744_d6e32b0cd4_b.jpg" height="80"/>
+                  </a>
+               </span>
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlImageLink">
+                  <a href="http://www.flickr.com/photos/54934586@N07/5101667292/">
+                     <img src="http://farm2.staticflickr.com/1401/5101667292_078ab6a092_b.jpg" height="80"/>
+                  </a>
+               </span>
+            </div>
+         </p>
+         <p>
+            <div id="redditPost">
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlTextLink">
+                  <a href="http://www.reddit.com/r/software/comments/1g4mw2/scheduling_software_best_licensed_programs/">Scheduling software; Best licensed programs available?</a>
+               </span>
+            </div>
+         </p>
+         <p>
+            <div id="flickrResults">
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlText">
+                  <p>
+                     <small>Recent Uploads tagged scheduling and software</small>
+                  </p>
+               </span>
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlImageLink">
+                  <a href="http://www.flickr.com/photos/netia_software/8488393481/">
+                     <img src="http://farm9.staticflickr.com/8252/8488393481_1a2910fb2d_b.jpg" height="80"/>
+                  </a>
+               </span>
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlImageLink">
+                  <a href="http://www.flickr.com/photos/netia_software/6458702713/">
+                     <img src="http://farm8.staticflickr.com/7030/6458702713_a0ea9252cc_b.jpg" height="80"/>
+                  </a>
+               </span>
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlImageLink">
+                  <a href="http://www.flickr.com/photos/netia_software/8489506126/">
+                     <img src="http://farm9.staticflickr.com/8230/8489506126_9d2afd7db1_b.jpg" height="80"/>
+                  </a>
+               </span>
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlImageLink">
+                  <a href="http://www.flickr.com/photos/netia_software/8489487824/">
+                     <img src="http://farm9.staticflickr.com/8091/8489487824_365cac0298_b.jpg" height="80"/>
+                  </a>
+               </span>
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlImageLink">
+                  <a href="http://www.flickr.com/photos/netia_software/6458724523/">
+                     <img src="http://farm8.staticflickr.com/7150/6458724523_aeffd22187_b.jpg" height="80"/>
+                  </a>
+               </span>
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlImageLink">
+                  <a href="http://www.flickr.com/photos/nancycahille/6835701758/">
+                     <img src="http://farm8.staticflickr.com/7179/6835701758_b76d642d74_b.jpg" height="80"/>
+                  </a>
+               </span>
+            </div>
+         </p>
+         <p>
+            <div id="redditPost">
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlTextLink">
+                  <a href="http://peterbiggs.areavoices.com/2013/06/11/ediscovery-and-electronic-forensics-alternative-charge-preparations/">E-Discovery and Electronic Forensics: Alternative Charge Preparations</a>
+               </span>
+            </div>
+         </p>
+         <p>
+            <div id="flickrResults">
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlText">
+                  <p>
+                     <small>Recent Uploads tagged preparations and ediscovery</small>
+                  </p>
+               </span>
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlText">
+                  <p>
+                     <small>No results found.</small>
+                  </p>
+               </span>
+            </div>
+         </p>
+         <p>
+            <div id="redditPost">
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlTextLink">
+                  <a href="http://www.youtube.com/watch?v=5_7VhCt1kRg&amp;amp;rel=false">Can’t decide what to do tonight? Now, there’s an app for that...</a>
+               </span>
+            </div>
+         </p>
+         <p>
+            <div id="flickrResults">
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlText">
+                  <p>
+                     <small>Recent Uploads tagged tonight and there’s</small>
+                  </p>
+               </span>
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlText">
+                  <p>
+                     <small>No results found.</small>
+                  </p>
+               </span>
+            </div>
+         </p>
+         <p>
+            <div id="redditPost">
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlTextLink">
+                  <a href="http://arturotoms.bcz.com/2013/06/11/ediscovery-and-digital-forensics-alternative-charge-preparations/">Electronic Discovery and Digital Forensics: Alternative Charge Preparations</a>
+               </span>
+            </div>
+         </p>
+         <p>
+            <div id="flickrResults">
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlText">
+                  <p>
+                     <small>Recent Uploads tagged preparations and alternative</small>
+                  </p>
+               </span>
+               <span xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="htmlText">
+                  <p>
+                     <small>No results found.</small>
+                  </p>
+               </span>
+            </div>
+         </p>
+      </p>
+   </body>
+</html>
\ No newline at end of file
diff --git a/moxy/dynamic/flickr/pom.xml b/moxy/social-binding/pom.xml
similarity index 93%
rename from moxy/dynamic/flickr/pom.xml
rename to moxy/social-binding/pom.xml
index 6820ecf..6beef6c 100644
--- a/moxy/dynamic/flickr/pom.xml
+++ b/moxy/social-binding/pom.xml
@@ -79,16 +79,6 @@
         </dependency>
 
         <!-- Alchemy, for extracting keywords in this example -->
-        <dependency>
-            <groupId>com.likethecolor</groupId>
-            <artifactId>alchemy</artifactId>
-            <version>1.0.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-nop</artifactId>
-            <version>1.7.0</version>
-        </dependency>
     </dependencies>
 
     <build>
diff --git a/moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/FlikrReader.java b/moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/FlikrReader.java
similarity index 94%
rename from moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/FlikrReader.java
rename to moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/FlikrReader.java
index d518d9e..9304a43 100644
--- a/moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/FlikrReader.java
+++ b/moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/FlikrReader.java
@@ -8,7 +8,7 @@
  * and the Eclipse Distribution License is available at
  * http://www.eclipse.org/org/documents/edl-v10.php.
  ******************************************************************************/
-package eclipselink.example.moxy.dynamic.flickr;
+package eclipselink.example.moxy.socialbinding;
 
 import java.io.InputStream;
 import java.net.URL;
@@ -24,6 +24,11 @@
 import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext;
 import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContextFactory;
 
+/**
+ * 
+ * @author rbarkhous
+ * @since EclipseLink 2.4.2
+ */
 public class FlikrReader {
 
     private DynamicJAXBContext context;
@@ -56,7 +61,7 @@
             System.out.println();
             System.out.println("Headline: [" + post.get("title") + "]");
 
-            String keywords = new AlchemyAccessor().extractConcepts(post.get("title").toString());
+            String keywords = new KeywordExtractor().extractKeywords(post.get("title").toString());
 
             String flickrUrlString = FLICKR_URL + keywords;
             System.out.print("Searching Flickr: [" + flickrUrlString + "]... ");
diff --git a/moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/HTMLWriter.java b/moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/HTMLWriter.java
similarity index 97%
rename from moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/HTMLWriter.java
rename to moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/HTMLWriter.java
index 4440e71..a50f8ea 100644
--- a/moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/HTMLWriter.java
+++ b/moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/HTMLWriter.java
@@ -8,7 +8,7 @@
  * and the Eclipse Distribution License is available at
  * http://www.eclipse.org/org/documents/edl-v10.php.
  ******************************************************************************/
-package eclipselink.example.moxy.dynamic.flickr;
+package eclipselink.example.moxy.socialbinding;
 
 import java.awt.Desktop;
 import java.io.File;
@@ -27,6 +27,11 @@
 import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext;
 import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContextFactory;
 
+/**
+ * 
+ * @author rbarkhous
+ * @since EclipseLink 2.4.2
+ */
 public class HTMLWriter {
 
     private DynamicJAXBContext context;
diff --git a/moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/KeywordExtractor.java b/moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/KeywordExtractor.java
new file mode 100644
index 0000000..8f3cf93
--- /dev/null
+++ b/moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/KeywordExtractor.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ *
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ ******************************************************************************/
+package eclipselink.example.moxy.socialbinding;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.StringTokenizer;
+
+/**
+ * 
+ * @author rbarkhous
+ * @since EclipseLink 2.4.2
+ */
+public class KeywordExtractor {
+
+    public String extractKeywords(String postTitle) {
+        StringTokenizer tokenizer = new StringTokenizer(postTitle, ",.!?()[]'\" \t\n\r\f/");
+
+        ArrayList<String> words = new ArrayList<String>();
+
+        while (tokenizer.hasMoreElements()) {
+            String token = tokenizer.nextToken();
+            if (token.length() > 3 || token.toUpperCase().equals(token)) {
+                words.add(token);
+            }
+        }
+
+        // Sort words, longest one first
+        Collections.sort(words, new StringLengthComparator());
+
+        String keywords = null;
+        if (words.size() > 1) {
+            keywords = words.get(0) + "," + words.get(1);
+        } else {
+            keywords = words.get(0);
+        }
+
+        return keywords;
+    }
+
+    private class StringLengthComparator implements Comparator<String> {
+        public int compare(String o1, String o2) {
+            if (o1.length() > o2.length()) {
+                return -1;
+            } else if (o1.length() < o2.length()) {
+                return 1;
+            } else {
+                return 0;
+            }
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/Main.java b/moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/Main.java
similarity index 91%
rename from moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/Main.java
rename to moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/Main.java
index c5400c4..cc2f025 100644
--- a/moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/Main.java
+++ b/moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/Main.java
@@ -8,12 +8,17 @@
  * and the Eclipse Distribution License is available at
  * http://www.eclipse.org/org/documents/edl-v10.php.
  ******************************************************************************/
-package eclipselink.example.moxy.dynamic.flickr;
+package eclipselink.example.moxy.socialbinding;
 
 import java.util.Map;
 
 import org.eclipse.persistence.dynamic.DynamicEntity;
 
+/**
+ * 
+ * @author rbarkhous
+ * @since EclipseLink 2.4.2
+ */
 public class Main {
 
     public static void main(String[] args) {
diff --git a/moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/RedditReader.java b/moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/RedditReader.java
similarity index 96%
rename from moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/RedditReader.java
rename to moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/RedditReader.java
index 1f793a8..9f61af6 100644
--- a/moxy/dynamic/flickr/src/main/java/eclipselink/example/moxy/dynamic/flickr/RedditReader.java
+++ b/moxy/social-binding/src/main/java/eclipselink/example/moxy/socialbinding/RedditReader.java
@@ -8,7 +8,7 @@
  * and the Eclipse Distribution License is available at
  * http://www.eclipse.org/org/documents/edl-v10.php.
  ******************************************************************************/
-package eclipselink.example.moxy.dynamic.flickr;
+package eclipselink.example.moxy.socialbinding;
 
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -27,6 +27,11 @@
 import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContextFactory;
 import org.eclipse.persistence.oxm.MediaType;
 
+/**
+ * 
+ * @author rbarkhous
+ * @since EclipseLink 2.4.2
+ */
 public class RedditReader {
 
     private DynamicJAXBContext context;
diff --git a/moxy/dynamic/flickr/src/main/resources/META-INF/bindings-flickr.json b/moxy/social-binding/src/main/resources/META-INF/bindings-flickr.json
similarity index 100%
rename from moxy/dynamic/flickr/src/main/resources/META-INF/bindings-flickr.json
rename to moxy/social-binding/src/main/resources/META-INF/bindings-flickr.json
diff --git a/moxy/dynamic/flickr/src/main/resources/META-INF/bindings-flickr.xml b/moxy/social-binding/src/main/resources/META-INF/bindings-flickr.xml
similarity index 100%
rename from moxy/dynamic/flickr/src/main/resources/META-INF/bindings-flickr.xml
rename to moxy/social-binding/src/main/resources/META-INF/bindings-flickr.xml
diff --git a/moxy/dynamic/flickr/src/main/resources/META-INF/bindings-html.xml b/moxy/social-binding/src/main/resources/META-INF/bindings-html.xml
similarity index 100%
rename from moxy/dynamic/flickr/src/main/resources/META-INF/bindings-html.xml
rename to moxy/social-binding/src/main/resources/META-INF/bindings-html.xml
diff --git a/moxy/dynamic/flickr/src/main/resources/META-INF/bindings-reddit.json b/moxy/social-binding/src/main/resources/META-INF/bindings-reddit.json
similarity index 100%
rename from moxy/dynamic/flickr/src/main/resources/META-INF/bindings-reddit.json
rename to moxy/social-binding/src/main/resources/META-INF/bindings-reddit.json
diff --git a/moxy/dynamic/flickr/src/main/resources/META-INF/bindings-reddit.xml b/moxy/social-binding/src/main/resources/META-INF/bindings-reddit.xml
similarity index 100%
rename from moxy/dynamic/flickr/src/main/resources/META-INF/bindings-reddit.xml
rename to moxy/social-binding/src/main/resources/META-INF/bindings-reddit.xml
diff --git a/moxy/dynamic/flickr/style.css b/moxy/social-binding/style.css
similarity index 100%
rename from moxy/dynamic/flickr/style.css
rename to moxy/social-binding/style.css
