diff --git a/core/javaAction/init.py b/core/javaAction/init.py
deleted file mode 100644
index 4d3b614..0000000
--- a/core/javaAction/init.py
+++ /dev/null
@@ -1,29 +0,0 @@
-import os
-import sys
-import json
-import requests
-import codecs
-import base64
-
-HOST=os.environ["CONTAINER"]
-if HOST == "":
-    HOST = "localhost"
-
-DEST="http://%s:8080/init" % HOST
-
-if os.path.isfile(sys.argv[1]):
-    with open(sys.argv[1], "rb") as fp:
-        encoded = base64.b64encode(fp.read())
-else:
-    encoded = sys.argv[1]
-
-payload = {
-    "value" : {
-        "main" : sys.argv[2],
-        "jar"  : encoded
-    }
-}
-
-r = requests.post(DEST, json.dumps(payload, indent=2))
-
-print r.text
diff --git a/core/javaAction/run.py b/core/javaAction/run.py
deleted file mode 100644
index e5b0d55..0000000
--- a/core/javaAction/run.py
+++ /dev/null
@@ -1,39 +0,0 @@
-import os
-import sys
-import json
-import requests
-import codecs
-
-HOST=os.environ["CONTAINER"]
-if HOST == "":
-    HOST = "localhost"
-
-DEST="http://%s:8080/run" % HOST
-
-def content_from_args(args):
-    if len(args) == 0:
-        return {}
-
-    if len(args) == 1 and os.path.exists(args[0]):
-        with open(args[0]) as fp:
-            return json.load(fp)
-
-    # else...
-    in_str = " ".join(args)
-    try:
-        d = json.loads(in_str)
-        if isinstance(d, dict):
-            return d
-        else:
-            raise "Not a dict."
-    except:
-        return { "payload" : " ".join(sys.argv[1:]) }
-
-
-value = content_from_args(sys.argv[1:])
-
-print "Sending value: %s..." % json.dumps(value)[0:40]
-
-r = requests.post(DEST, json.dumps({ "value" : value }))
-
-print r.text
