diff --git a/rsScriptGroup.h b/rsScriptGroup.h
index 974e3ba..ff0259a 100644
--- a/rsScriptGroup.h
+++ b/rsScriptGroup.h
@@ -17,21 +17,30 @@
 #ifndef ANDROID_RS_SCRIPT_GROUP_H
 #define ANDROID_RS_SCRIPT_GROUP_H
 
-#include "rsAllocation.h"
-#include "rsScript.h"
+#include "rsScriptGroupBase.h"
 
+#include <vector>
 
 // ---------------------------------------------------------------------------
 namespace android {
 namespace renderscript {
 
+class Allocation;
+class Context;
 class ProgramVertex;
 class ProgramFragment;
 class ProgramRaster;
 class ProgramStore;
+class Script;
+class ScriptFieldID;
+class ScriptKernelID;
+class Type;
 
-class ScriptGroup : public ObjectBase {
+class ScriptGroup : public ScriptGroupBase {
 public:
+    virtual SG_API_Version getApiVersion() const { return SG_V1; }
+    virtual void execute(Context *rsc);
+
     std::vector<ObjectBaseRef<ScriptKernelID> > mKernels;
 
     class Link {
@@ -70,15 +79,6 @@
     std::vector<IO *> mInputs;
     std::vector<IO *> mOutputs;
 
-    struct Hal {
-        void * drv;
-
-        struct DriverInfo {
-        };
-        DriverInfo info;
-    };
-    Hal mHal;
-
     static ScriptGroup * create(Context *rsc,
                            ScriptKernelID ** kernels, size_t kernelsSize,
                            ScriptKernelID ** src, size_t srcSize,
@@ -86,14 +86,9 @@
                            ScriptFieldID ** dstF, size_t dstFSize,
                            const Type ** type, size_t typeSize);
 
-    virtual void serialize(Context *rsc, OStream *stream) const;
-    virtual RsA3DClassID getClassId() const;
-
-    void execute(Context *rsc);
     void setInput(Context *rsc, ScriptKernelID *kid, Allocation *a);
     void setOutput(Context *rsc, ScriptKernelID *kid, Allocation *a);
 
-
 protected:
     virtual ~ScriptGroup();
     bool mInitialized;
