diff --git a/.gitignore b/.gitignore
index a178491..5da2729 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,5 @@
 target/
 #Ignore workspace folders
 workspace/
+#Ignore tmo files
+*.tmo
diff --git a/org.eclipse.ote.simple.test.script/.classpath b/org.eclipse.ote.simple.test.script/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/org.eclipse.ote.simple.test.script/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.ote.simple.test.script/.project b/org.eclipse.ote.simple.test.script/.project
new file mode 100644
index 0000000..f321673
--- /dev/null
+++ b/org.eclipse.ote.simple.test.script/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ote.simple.test.script</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.ote.simple.test.script/META-INF/MANIFEST.MF b/org.eclipse.ote.simple.test.script/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1566bac
--- /dev/null
+++ b/org.eclipse.ote.simple.test.script/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: OTE Simple Test Script
+Bundle-SymbolicName: org.eclipse.ote.simple.test.script
+Bundle-Version: 1.0.0.qualifier
+Require-Bundle: org.eclipse.core.runtime
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.ote.simple.test.script
+Service-Component: OSGI-INF/*.xml
+Import-Package: org.eclipse.osee.framework.jdk.core.persistence,
+ org.eclipse.osee.ote.core,
+ org.eclipse.osee.ote.core.enums,
+ org.eclipse.osee.ote.core.environment.interfaces,
+ org.eclipse.osee.ote.core.environment.jini,
+ org.eclipse.osee.ote.message,
+ org.eclipse.ote.simple.test.environment
diff --git a/org.eclipse.ote.simple.test.script/build.properties b/org.eclipse.ote.simple.test.script/build.properties
new file mode 100644
index 0000000..5b359b5
--- /dev/null
+++ b/org.eclipse.ote.simple.test.script/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
\ No newline at end of file
diff --git a/org.eclipse.ote.simple.test.script/pom.xml b/org.eclipse.ote.simple.test.script/pom.xml
new file mode 100644
index 0000000..40f2697
--- /dev/null
+++ b/org.eclipse.ote.simple.test.script/pom.xml
@@ -0,0 +1,17 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.eclipse.ote.build</groupId>
+		<artifactId>core</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+		<relativePath>../org.eclipse.ote.build/maven/core/</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.ote.simple.test.script</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<name>Eclipse OTE Simple Test Script (Incubation)</name>
+
+</project>
\ No newline at end of file
diff --git a/org.eclipse.ote.simple.test.script/src/org/eclipse/ote/simple/test/script/SimpleTestScript.java b/org.eclipse.ote.simple.test.script/src/org/eclipse/ote/simple/test/script/SimpleTestScript.java
new file mode 100644
index 0000000..bbccd81
--- /dev/null
+++ b/org.eclipse.ote.simple.test.script/src/org/eclipse/ote/simple/test/script/SimpleTestScript.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.ote.simple.test.script;
+
+import org.eclipse.osee.ote.core.TestCase;
+import org.eclipse.osee.ote.core.TestScript;
+import org.eclipse.osee.ote.core.enums.ScriptTypeEnum;
+import org.eclipse.osee.ote.core.environment.interfaces.ITestEnvironmentAccessor;
+import org.eclipse.osee.ote.core.environment.interfaces.ITestLogger;
+import org.eclipse.osee.ote.core.environment.jini.ITestEnvironmentCommandCallback;
+import org.eclipse.ote.simple.test.environment.SimpleTestEnvironment;
+
+/**
+ * @author Andy Jury
+ */
+public class SimpleTestScript extends TestScript {
+
+
+
+   public SimpleTestScript(SimpleTestEnvironment testEnvironment, ITestEnvironmentCommandCallback callback) {
+
+      super(testEnvironment, null, ScriptTypeEnum.FUNCTIONAL_TEST, true);
+
+
+      new TestCase1(this);
+      new TestCase2(this);
+   }
+
+   private class LocalSetupTestCase extends TestCase {
+
+      protected LocalSetupTestCase(TestScript parent) {
+
+         super(parent, false, false);
+      }
+
+      public void doTestCase(ITestEnvironmentAccessor environment, ITestLogger logger) throws InterruptedException {
+         prompt("In the LocalSetupTestCase");
+      }
+   }
+
+   protected TestCase getSetupTestCase() {
+
+      return new LocalSetupTestCase(this);
+   }
+
+   public class TestCase1 extends TestCase {
+
+      public TestCase1(TestScript parent) {
+
+         super(parent);
+      }
+
+      public void doTestCase(ITestEnvironmentAccessor environment, ITestLogger logger) throws InterruptedException {
+         prompt("In TestCase1");
+         promptPause("In TestCase1");
+         promptPassFail("Pass/Fail?");
+      }
+   }
+
+   public class TestCase2 extends TestCase {
+
+      public TestCase2(TestScript parent) {
+
+         super(parent);
+      }
+
+      public void doTestCase(ITestEnvironmentAccessor environment, ITestLogger logger) throws InterruptedException {
+         prompt("In TestCase2");
+         promptPause("In TestCase2");
+         promptPassFail("Pass/Fail?");
+      }
+   }
+}
