diff --git a/cruncher-types.cabal b/cruncher-types.cabal
--- a/cruncher-types.cabal
+++ b/cruncher-types.cabal
@@ -1,5 +1,5 @@
 name:                cruncher-types
-version:             1.0.2
+version:             1.0.3
 synopsis:            Request and Response types for Eval.so's API
 description:
   You are not likely to find this useful unless you are building a library for
diff --git a/src/Evalso/Cruncher/FinalResult.hs b/src/Evalso/Cruncher/FinalResult.hs
--- a/src/Evalso/Cruncher/FinalResult.hs
+++ b/src/Evalso/Cruncher/FinalResult.hs
@@ -45,9 +45,3 @@
     where
       selinuxError :: String
       selinuxError = "Internal security error - halting request"
-
-instance FromJSON FinalResult where
-  parseJSON (Object v) = FinalResult <$>
-                             v .: "compile"
-                         <*> v .: "run"
-  parseJSON _          = mzero
diff --git a/src/Evalso/Cruncher/Request.hs b/src/Evalso/Cruncher/Request.hs
--- a/src/Evalso/Cruncher/Request.hs
+++ b/src/Evalso/Cruncher/Request.hs
@@ -11,7 +11,8 @@
 import Control.Applicative
 import Control.Monad (mzero)
 import Data.Aeson
-import qualified Data.ByteString.Char8 as C8
+import Data.ByteString (ByteString)
+import Data.Map (Map)
 import qualified Data.Text as T
 
 -- | Describes an incoming request to the system. Proper use of this will
@@ -19,7 +20,7 @@
 data Request = Request {
     language    :: String
   , code        :: T.Text
-  , files       :: Maybe [(String, C8.ByteString)]
+  , inputFiles  :: Maybe (Map String ByteString)
   , compileOnly :: Bool
   , stdin       :: Maybe T.Text
 } deriving (Eq, Show)
