Split ProgramFragment and ProgramStore from RenderScript.java.  Update Element and Type to new cached builder for easier app developement.
diff --git a/graphics/java/android/renderscript/Type.java b/graphics/java/android/renderscript/Type.java
index 86932c4..4078c8a 100644
--- a/graphics/java/android/renderscript/Type.java
+++ b/graphics/java/android/renderscript/Type.java
@@ -45,23 +45,47 @@
 
     public static class Builder {
         RenderScript mRS;
-        boolean mActive = true;
+        Entry[] mEntries;
+        int mEntryCount;
+        Element mElement;
 
-        Builder(RenderScript rs) {
-            mRS = rs;
+        class Entry {
+            Dimension mDim;
+            int mValue;
         }
 
-        public void begin(Element e) {
-            mRS.nTypeBegin(e.mID);
+        public Builder(RenderScript rs, Element e) {
+            mRS = rs;
+            mEntries = new Entry[4];
+            mElement = e;
         }
 
         public void add(Dimension d, int value) {
-            mRS.nTypeAdd(d.mID, value);
+            if(mEntries.length >= mEntryCount) {
+                Entry[] en = new Entry[mEntryCount + 8];
+                for(int ct=0; ct < mEntries.length; ct++) {
+                    en[ct] = mEntries[ct];
+                }
+                mEntries = en;
+            }
+            mEntries[mEntryCount] = new Entry();
+            mEntries[mEntryCount].mDim = d;
+            mEntries[mEntryCount].mValue = value;
+            mEntryCount++;
+        }
+
+        static synchronized Type internalCreate(RenderScript rs, Builder b) {
+            rs.nTypeBegin(b.mElement.mID);
+            for (int ct=0; ct < b.mEntryCount; ct++) {
+                Entry en = b.mEntries[ct];
+                rs.nTypeAdd(en.mDim.mID, en.mValue);
+            }
+            int id = rs.nTypeCreate();
+            return new Type(id, rs);
         }
 
         public Type create() {
-            int id = mRS.nTypeCreate();
-            return new Type(id, mRS);
+            return internalCreate(mRS, this);
         }
     }