diff --git a/Database/Cassandra/Thrift/Cassandra.hs b/Database/Cassandra/Thrift/Cassandra.hs
new file mode 100644
--- /dev/null
+++ b/Database/Cassandra/Thrift/Cassandra.hs
@@ -0,0 +1,1700 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+-----------------------------------------------------------------
+-- Autogenerated by Thrift                                     --
+--                                                             --
+-- DO NOT EDIT UNLESS YOU ARE SURE YOU KNOW WHAT YOU ARE DOING --
+-----------------------------------------------------------------
+
+module Database.Cassandra.Thrift.Cassandra where
+import Thrift
+import Data.Typeable ( Typeable )
+import Control.Exception
+import qualified Data.Map as Map
+import qualified Data.Set as Set
+import Data.Int
+import Database.Cassandra.Thrift.Cassandra_Types
+import qualified Database.Cassandra.Thrift.Cassandra_Iface as Iface
+-- HELPER FUNCTIONS AND STRUCTURES --
+
+data Get_args = Get_args{f_Get_args_keyspace :: Maybe String,f_Get_args_key :: Maybe String,f_Get_args_column_path :: Maybe ColumnPath,f_Get_args_consistency_level :: Maybe ConsistencyLevel} deriving (Show,Eq,Ord,Typeable)
+write_Get_args oprot rec = do
+  writeStructBegin oprot "Get_args"
+  case f_Get_args_keyspace rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("keyspace",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Get_args_key rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("key",T_STRING,2)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Get_args_column_path rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column_path",T_STRUCT,3)
+    write_ColumnPath oprot _v
+    writeFieldEnd oprot}
+  case f_Get_args_consistency_level rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("consistency_level",T_I32,4)
+    writeI32 oprot (fromEnum _v)
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_args_fields iprot rec = do
+  (_,_t81,_id82) <- readFieldBegin iprot
+  if _t81 == T_STOP then return rec else
+    case _id82 of 
+      1 -> if _t81 == T_STRING then do
+        s <- readString iprot
+        read_Get_args_fields iprot rec{f_Get_args_keyspace=Just s}
+        else do
+          skip iprot _t81
+          read_Get_args_fields iprot rec
+      2 -> if _t81 == T_STRING then do
+        s <- readString iprot
+        read_Get_args_fields iprot rec{f_Get_args_key=Just s}
+        else do
+          skip iprot _t81
+          read_Get_args_fields iprot rec
+      3 -> if _t81 == T_STRUCT then do
+        s <- (read_ColumnPath iprot)
+        read_Get_args_fields iprot rec{f_Get_args_column_path=Just s}
+        else do
+          skip iprot _t81
+          read_Get_args_fields iprot rec
+      4 -> if _t81 == T_I32 then do
+        s <- (do {i <- readI32 iprot; return (toEnum i :: ConsistencyLevel)})
+        read_Get_args_fields iprot rec{f_Get_args_consistency_level=Just s}
+        else do
+          skip iprot _t81
+          read_Get_args_fields iprot rec
+      _ -> do
+        skip iprot _t81
+        readFieldEnd iprot
+        read_Get_args_fields iprot rec
+read_Get_args iprot = do
+  readStructBegin iprot
+  rec <- read_Get_args_fields iprot (Get_args{f_Get_args_keyspace=Nothing,f_Get_args_key=Nothing,f_Get_args_column_path=Nothing,f_Get_args_consistency_level=Nothing})
+  readStructEnd iprot
+  return rec
+data Get_result = Get_result{f_Get_result_success :: Maybe ColumnOrSuperColumn,f_Get_result_ire :: Maybe InvalidRequestException,f_Get_result_nfe :: Maybe NotFoundException,f_Get_result_ue :: Maybe UnavailableException,f_Get_result_te :: Maybe TimedOutException} deriving (Show,Eq,Ord,Typeable)
+write_Get_result oprot rec = do
+  writeStructBegin oprot "Get_result"
+  case f_Get_result_success rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("success",T_STRUCT,0)
+    write_ColumnOrSuperColumn oprot _v
+    writeFieldEnd oprot}
+  case f_Get_result_ire rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ire",T_STRUCT,1)
+    write_InvalidRequestException oprot _v
+    writeFieldEnd oprot}
+  case f_Get_result_nfe rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("nfe",T_STRUCT,2)
+    write_NotFoundException oprot _v
+    writeFieldEnd oprot}
+  case f_Get_result_ue rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ue",T_STRUCT,3)
+    write_UnavailableException oprot _v
+    writeFieldEnd oprot}
+  case f_Get_result_te rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("te",T_STRUCT,4)
+    write_TimedOutException oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_result_fields iprot rec = do
+  (_,_t86,_id87) <- readFieldBegin iprot
+  if _t86 == T_STOP then return rec else
+    case _id87 of 
+      0 -> if _t86 == T_STRUCT then do
+        s <- (read_ColumnOrSuperColumn iprot)
+        read_Get_result_fields iprot rec{f_Get_result_success=Just s}
+        else do
+          skip iprot _t86
+          read_Get_result_fields iprot rec
+      1 -> if _t86 == T_STRUCT then do
+        s <- (read_InvalidRequestException iprot)
+        read_Get_result_fields iprot rec{f_Get_result_ire=Just s}
+        else do
+          skip iprot _t86
+          read_Get_result_fields iprot rec
+      2 -> if _t86 == T_STRUCT then do
+        s <- (read_NotFoundException iprot)
+        read_Get_result_fields iprot rec{f_Get_result_nfe=Just s}
+        else do
+          skip iprot _t86
+          read_Get_result_fields iprot rec
+      3 -> if _t86 == T_STRUCT then do
+        s <- (read_UnavailableException iprot)
+        read_Get_result_fields iprot rec{f_Get_result_ue=Just s}
+        else do
+          skip iprot _t86
+          read_Get_result_fields iprot rec
+      4 -> if _t86 == T_STRUCT then do
+        s <- (read_TimedOutException iprot)
+        read_Get_result_fields iprot rec{f_Get_result_te=Just s}
+        else do
+          skip iprot _t86
+          read_Get_result_fields iprot rec
+      _ -> do
+        skip iprot _t86
+        readFieldEnd iprot
+        read_Get_result_fields iprot rec
+read_Get_result iprot = do
+  readStructBegin iprot
+  rec <- read_Get_result_fields iprot (Get_result{f_Get_result_success=Nothing,f_Get_result_ire=Nothing,f_Get_result_nfe=Nothing,f_Get_result_ue=Nothing,f_Get_result_te=Nothing})
+  readStructEnd iprot
+  return rec
+data Get_slice_args = Get_slice_args{f_Get_slice_args_keyspace :: Maybe String,f_Get_slice_args_key :: Maybe String,f_Get_slice_args_column_parent :: Maybe ColumnParent,f_Get_slice_args_predicate :: Maybe SlicePredicate,f_Get_slice_args_consistency_level :: Maybe ConsistencyLevel} deriving (Show,Eq,Ord,Typeable)
+write_Get_slice_args oprot rec = do
+  writeStructBegin oprot "Get_slice_args"
+  case f_Get_slice_args_keyspace rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("keyspace",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Get_slice_args_key rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("key",T_STRING,2)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Get_slice_args_column_parent rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column_parent",T_STRUCT,3)
+    write_ColumnParent oprot _v
+    writeFieldEnd oprot}
+  case f_Get_slice_args_predicate rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("predicate",T_STRUCT,4)
+    write_SlicePredicate oprot _v
+    writeFieldEnd oprot}
+  case f_Get_slice_args_consistency_level rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("consistency_level",T_I32,5)
+    writeI32 oprot (fromEnum _v)
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_slice_args_fields iprot rec = do
+  (_,_t91,_id92) <- readFieldBegin iprot
+  if _t91 == T_STOP then return rec else
+    case _id92 of 
+      1 -> if _t91 == T_STRING then do
+        s <- readString iprot
+        read_Get_slice_args_fields iprot rec{f_Get_slice_args_keyspace=Just s}
+        else do
+          skip iprot _t91
+          read_Get_slice_args_fields iprot rec
+      2 -> if _t91 == T_STRING then do
+        s <- readString iprot
+        read_Get_slice_args_fields iprot rec{f_Get_slice_args_key=Just s}
+        else do
+          skip iprot _t91
+          read_Get_slice_args_fields iprot rec
+      3 -> if _t91 == T_STRUCT then do
+        s <- (read_ColumnParent iprot)
+        read_Get_slice_args_fields iprot rec{f_Get_slice_args_column_parent=Just s}
+        else do
+          skip iprot _t91
+          read_Get_slice_args_fields iprot rec
+      4 -> if _t91 == T_STRUCT then do
+        s <- (read_SlicePredicate iprot)
+        read_Get_slice_args_fields iprot rec{f_Get_slice_args_predicate=Just s}
+        else do
+          skip iprot _t91
+          read_Get_slice_args_fields iprot rec
+      5 -> if _t91 == T_I32 then do
+        s <- (do {i <- readI32 iprot; return (toEnum i :: ConsistencyLevel)})
+        read_Get_slice_args_fields iprot rec{f_Get_slice_args_consistency_level=Just s}
+        else do
+          skip iprot _t91
+          read_Get_slice_args_fields iprot rec
+      _ -> do
+        skip iprot _t91
+        readFieldEnd iprot
+        read_Get_slice_args_fields iprot rec
+read_Get_slice_args iprot = do
+  readStructBegin iprot
+  rec <- read_Get_slice_args_fields iprot (Get_slice_args{f_Get_slice_args_keyspace=Nothing,f_Get_slice_args_key=Nothing,f_Get_slice_args_column_parent=Nothing,f_Get_slice_args_predicate=Nothing,f_Get_slice_args_consistency_level=Nothing})
+  readStructEnd iprot
+  return rec
+data Get_slice_result = Get_slice_result{f_Get_slice_result_success :: Maybe [ColumnOrSuperColumn],f_Get_slice_result_ire :: Maybe InvalidRequestException,f_Get_slice_result_ue :: Maybe UnavailableException,f_Get_slice_result_te :: Maybe TimedOutException} deriving (Show,Eq,Ord,Typeable)
+write_Get_slice_result oprot rec = do
+  writeStructBegin oprot "Get_slice_result"
+  case f_Get_slice_result_success rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("success",T_LIST,0)
+    (let {f [] = return (); f (_viter95:t) = do {write_ColumnOrSuperColumn oprot _viter95;f t}} in do {writeListBegin oprot (T_STRUCT,length _v); f _v;writeListEnd oprot})
+    writeFieldEnd oprot}
+  case f_Get_slice_result_ire rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ire",T_STRUCT,1)
+    write_InvalidRequestException oprot _v
+    writeFieldEnd oprot}
+  case f_Get_slice_result_ue rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ue",T_STRUCT,2)
+    write_UnavailableException oprot _v
+    writeFieldEnd oprot}
+  case f_Get_slice_result_te rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("te",T_STRUCT,3)
+    write_TimedOutException oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_slice_result_fields iprot rec = do
+  (_,_t97,_id98) <- readFieldBegin iprot
+  if _t97 == T_STOP then return rec else
+    case _id98 of 
+      0 -> if _t97 == T_LIST then do
+        s <- (let {f 0 = return []; f n = do {v <- (read_ColumnOrSuperColumn iprot);r <- f (n-1); return $ v:r}} in do {(_etype102,_size99) <- readListBegin iprot; f _size99})
+        read_Get_slice_result_fields iprot rec{f_Get_slice_result_success=Just s}
+        else do
+          skip iprot _t97
+          read_Get_slice_result_fields iprot rec
+      1 -> if _t97 == T_STRUCT then do
+        s <- (read_InvalidRequestException iprot)
+        read_Get_slice_result_fields iprot rec{f_Get_slice_result_ire=Just s}
+        else do
+          skip iprot _t97
+          read_Get_slice_result_fields iprot rec
+      2 -> if _t97 == T_STRUCT then do
+        s <- (read_UnavailableException iprot)
+        read_Get_slice_result_fields iprot rec{f_Get_slice_result_ue=Just s}
+        else do
+          skip iprot _t97
+          read_Get_slice_result_fields iprot rec
+      3 -> if _t97 == T_STRUCT then do
+        s <- (read_TimedOutException iprot)
+        read_Get_slice_result_fields iprot rec{f_Get_slice_result_te=Just s}
+        else do
+          skip iprot _t97
+          read_Get_slice_result_fields iprot rec
+      _ -> do
+        skip iprot _t97
+        readFieldEnd iprot
+        read_Get_slice_result_fields iprot rec
+read_Get_slice_result iprot = do
+  readStructBegin iprot
+  rec <- read_Get_slice_result_fields iprot (Get_slice_result{f_Get_slice_result_success=Nothing,f_Get_slice_result_ire=Nothing,f_Get_slice_result_ue=Nothing,f_Get_slice_result_te=Nothing})
+  readStructEnd iprot
+  return rec
+data Multiget_args = Multiget_args{f_Multiget_args_keyspace :: Maybe String,f_Multiget_args_keys :: Maybe [String],f_Multiget_args_column_path :: Maybe ColumnPath,f_Multiget_args_consistency_level :: Maybe ConsistencyLevel} deriving (Show,Eq,Ord,Typeable)
+write_Multiget_args oprot rec = do
+  writeStructBegin oprot "Multiget_args"
+  case f_Multiget_args_keyspace rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("keyspace",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Multiget_args_keys rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("keys",T_LIST,2)
+    (let {f [] = return (); f (_viter106:t) = do {writeString oprot _viter106;f t}} in do {writeListBegin oprot (T_STRING,length _v); f _v;writeListEnd oprot})
+    writeFieldEnd oprot}
+  case f_Multiget_args_column_path rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column_path",T_STRUCT,3)
+    write_ColumnPath oprot _v
+    writeFieldEnd oprot}
+  case f_Multiget_args_consistency_level rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("consistency_level",T_I32,4)
+    writeI32 oprot (fromEnum _v)
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Multiget_args_fields iprot rec = do
+  (_,_t108,_id109) <- readFieldBegin iprot
+  if _t108 == T_STOP then return rec else
+    case _id109 of 
+      1 -> if _t108 == T_STRING then do
+        s <- readString iprot
+        read_Multiget_args_fields iprot rec{f_Multiget_args_keyspace=Just s}
+        else do
+          skip iprot _t108
+          read_Multiget_args_fields iprot rec
+      2 -> if _t108 == T_LIST then do
+        s <- (let {f 0 = return []; f n = do {v <- readString iprot;r <- f (n-1); return $ v:r}} in do {(_etype113,_size110) <- readListBegin iprot; f _size110})
+        read_Multiget_args_fields iprot rec{f_Multiget_args_keys=Just s}
+        else do
+          skip iprot _t108
+          read_Multiget_args_fields iprot rec
+      3 -> if _t108 == T_STRUCT then do
+        s <- (read_ColumnPath iprot)
+        read_Multiget_args_fields iprot rec{f_Multiget_args_column_path=Just s}
+        else do
+          skip iprot _t108
+          read_Multiget_args_fields iprot rec
+      4 -> if _t108 == T_I32 then do
+        s <- (do {i <- readI32 iprot; return (toEnum i :: ConsistencyLevel)})
+        read_Multiget_args_fields iprot rec{f_Multiget_args_consistency_level=Just s}
+        else do
+          skip iprot _t108
+          read_Multiget_args_fields iprot rec
+      _ -> do
+        skip iprot _t108
+        readFieldEnd iprot
+        read_Multiget_args_fields iprot rec
+read_Multiget_args iprot = do
+  readStructBegin iprot
+  rec <- read_Multiget_args_fields iprot (Multiget_args{f_Multiget_args_keyspace=Nothing,f_Multiget_args_keys=Nothing,f_Multiget_args_column_path=Nothing,f_Multiget_args_consistency_level=Nothing})
+  readStructEnd iprot
+  return rec
+data Multiget_result = Multiget_result{f_Multiget_result_success :: Maybe (Map.Map String ColumnOrSuperColumn),f_Multiget_result_ire :: Maybe InvalidRequestException,f_Multiget_result_ue :: Maybe UnavailableException,f_Multiget_result_te :: Maybe TimedOutException} deriving (Show,Eq,Ord,Typeable)
+write_Multiget_result oprot rec = do
+  writeStructBegin oprot "Multiget_result"
+  case f_Multiget_result_success rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("success",T_MAP,0)
+    (let {f [] = return (); f ((_kiter117,_viter118):t) = do {do {writeString oprot _kiter117;write_ColumnOrSuperColumn oprot _viter118};f t}} in do {writeMapBegin oprot (T_STRING,T_STRUCT,Map.size _v); f (Map.toList _v);writeMapEnd oprot})
+    writeFieldEnd oprot}
+  case f_Multiget_result_ire rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ire",T_STRUCT,1)
+    write_InvalidRequestException oprot _v
+    writeFieldEnd oprot}
+  case f_Multiget_result_ue rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ue",T_STRUCT,2)
+    write_UnavailableException oprot _v
+    writeFieldEnd oprot}
+  case f_Multiget_result_te rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("te",T_STRUCT,3)
+    write_TimedOutException oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Multiget_result_fields iprot rec = do
+  (_,_t120,_id121) <- readFieldBegin iprot
+  if _t120 == T_STOP then return rec else
+    case _id121 of 
+      0 -> if _t120 == T_MAP then do
+        s <- (let {f 0 = return []; f n = do {k <- readString iprot; v <- (read_ColumnOrSuperColumn iprot);r <- f (n-1); return $ (k,v):r}} in do {(_ktype123,_vtype124,_size122) <- readMapBegin iprot; l <- f _size122; return $ Map.fromList l})
+        read_Multiget_result_fields iprot rec{f_Multiget_result_success=Just s}
+        else do
+          skip iprot _t120
+          read_Multiget_result_fields iprot rec
+      1 -> if _t120 == T_STRUCT then do
+        s <- (read_InvalidRequestException iprot)
+        read_Multiget_result_fields iprot rec{f_Multiget_result_ire=Just s}
+        else do
+          skip iprot _t120
+          read_Multiget_result_fields iprot rec
+      2 -> if _t120 == T_STRUCT then do
+        s <- (read_UnavailableException iprot)
+        read_Multiget_result_fields iprot rec{f_Multiget_result_ue=Just s}
+        else do
+          skip iprot _t120
+          read_Multiget_result_fields iprot rec
+      3 -> if _t120 == T_STRUCT then do
+        s <- (read_TimedOutException iprot)
+        read_Multiget_result_fields iprot rec{f_Multiget_result_te=Just s}
+        else do
+          skip iprot _t120
+          read_Multiget_result_fields iprot rec
+      _ -> do
+        skip iprot _t120
+        readFieldEnd iprot
+        read_Multiget_result_fields iprot rec
+read_Multiget_result iprot = do
+  readStructBegin iprot
+  rec <- read_Multiget_result_fields iprot (Multiget_result{f_Multiget_result_success=Nothing,f_Multiget_result_ire=Nothing,f_Multiget_result_ue=Nothing,f_Multiget_result_te=Nothing})
+  readStructEnd iprot
+  return rec
+data Multiget_slice_args = Multiget_slice_args{f_Multiget_slice_args_keyspace :: Maybe String,f_Multiget_slice_args_keys :: Maybe [String],f_Multiget_slice_args_column_parent :: Maybe ColumnParent,f_Multiget_slice_args_predicate :: Maybe SlicePredicate,f_Multiget_slice_args_consistency_level :: Maybe ConsistencyLevel} deriving (Show,Eq,Ord,Typeable)
+write_Multiget_slice_args oprot rec = do
+  writeStructBegin oprot "Multiget_slice_args"
+  case f_Multiget_slice_args_keyspace rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("keyspace",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Multiget_slice_args_keys rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("keys",T_LIST,2)
+    (let {f [] = return (); f (_viter129:t) = do {writeString oprot _viter129;f t}} in do {writeListBegin oprot (T_STRING,length _v); f _v;writeListEnd oprot})
+    writeFieldEnd oprot}
+  case f_Multiget_slice_args_column_parent rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column_parent",T_STRUCT,3)
+    write_ColumnParent oprot _v
+    writeFieldEnd oprot}
+  case f_Multiget_slice_args_predicate rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("predicate",T_STRUCT,4)
+    write_SlicePredicate oprot _v
+    writeFieldEnd oprot}
+  case f_Multiget_slice_args_consistency_level rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("consistency_level",T_I32,5)
+    writeI32 oprot (fromEnum _v)
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Multiget_slice_args_fields iprot rec = do
+  (_,_t131,_id132) <- readFieldBegin iprot
+  if _t131 == T_STOP then return rec else
+    case _id132 of 
+      1 -> if _t131 == T_STRING then do
+        s <- readString iprot
+        read_Multiget_slice_args_fields iprot rec{f_Multiget_slice_args_keyspace=Just s}
+        else do
+          skip iprot _t131
+          read_Multiget_slice_args_fields iprot rec
+      2 -> if _t131 == T_LIST then do
+        s <- (let {f 0 = return []; f n = do {v <- readString iprot;r <- f (n-1); return $ v:r}} in do {(_etype136,_size133) <- readListBegin iprot; f _size133})
+        read_Multiget_slice_args_fields iprot rec{f_Multiget_slice_args_keys=Just s}
+        else do
+          skip iprot _t131
+          read_Multiget_slice_args_fields iprot rec
+      3 -> if _t131 == T_STRUCT then do
+        s <- (read_ColumnParent iprot)
+        read_Multiget_slice_args_fields iprot rec{f_Multiget_slice_args_column_parent=Just s}
+        else do
+          skip iprot _t131
+          read_Multiget_slice_args_fields iprot rec
+      4 -> if _t131 == T_STRUCT then do
+        s <- (read_SlicePredicate iprot)
+        read_Multiget_slice_args_fields iprot rec{f_Multiget_slice_args_predicate=Just s}
+        else do
+          skip iprot _t131
+          read_Multiget_slice_args_fields iprot rec
+      5 -> if _t131 == T_I32 then do
+        s <- (do {i <- readI32 iprot; return (toEnum i :: ConsistencyLevel)})
+        read_Multiget_slice_args_fields iprot rec{f_Multiget_slice_args_consistency_level=Just s}
+        else do
+          skip iprot _t131
+          read_Multiget_slice_args_fields iprot rec
+      _ -> do
+        skip iprot _t131
+        readFieldEnd iprot
+        read_Multiget_slice_args_fields iprot rec
+read_Multiget_slice_args iprot = do
+  readStructBegin iprot
+  rec <- read_Multiget_slice_args_fields iprot (Multiget_slice_args{f_Multiget_slice_args_keyspace=Nothing,f_Multiget_slice_args_keys=Nothing,f_Multiget_slice_args_column_parent=Nothing,f_Multiget_slice_args_predicate=Nothing,f_Multiget_slice_args_consistency_level=Nothing})
+  readStructEnd iprot
+  return rec
+data Multiget_slice_result = Multiget_slice_result{f_Multiget_slice_result_success :: Maybe (Map.Map String [ColumnOrSuperColumn]),f_Multiget_slice_result_ire :: Maybe InvalidRequestException,f_Multiget_slice_result_ue :: Maybe UnavailableException,f_Multiget_slice_result_te :: Maybe TimedOutException} deriving (Show,Eq,Ord,Typeable)
+write_Multiget_slice_result oprot rec = do
+  writeStructBegin oprot "Multiget_slice_result"
+  case f_Multiget_slice_result_success rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("success",T_MAP,0)
+    (let {f [] = return (); f ((_kiter140,_viter141):t) = do {do {writeString oprot _kiter140;(let {f [] = return (); f (_viter142:t) = do {write_ColumnOrSuperColumn oprot _viter142;f t}} in do {writeListBegin oprot (T_STRUCT,length _viter141); f _viter141;writeListEnd oprot})};f t}} in do {writeMapBegin oprot (T_STRING,T_LIST,Map.size _v); f (Map.toList _v);writeMapEnd oprot})
+    writeFieldEnd oprot}
+  case f_Multiget_slice_result_ire rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ire",T_STRUCT,1)
+    write_InvalidRequestException oprot _v
+    writeFieldEnd oprot}
+  case f_Multiget_slice_result_ue rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ue",T_STRUCT,2)
+    write_UnavailableException oprot _v
+    writeFieldEnd oprot}
+  case f_Multiget_slice_result_te rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("te",T_STRUCT,3)
+    write_TimedOutException oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Multiget_slice_result_fields iprot rec = do
+  (_,_t144,_id145) <- readFieldBegin iprot
+  if _t144 == T_STOP then return rec else
+    case _id145 of 
+      0 -> if _t144 == T_MAP then do
+        s <- (let {f 0 = return []; f n = do {k <- readString iprot; v <- (let {f 0 = return []; f n = do {v <- (read_ColumnOrSuperColumn iprot);r <- f (n-1); return $ v:r}} in do {(_etype154,_size151) <- readListBegin iprot; f _size151});r <- f (n-1); return $ (k,v):r}} in do {(_ktype147,_vtype148,_size146) <- readMapBegin iprot; l <- f _size146; return $ Map.fromList l})
+        read_Multiget_slice_result_fields iprot rec{f_Multiget_slice_result_success=Just s}
+        else do
+          skip iprot _t144
+          read_Multiget_slice_result_fields iprot rec
+      1 -> if _t144 == T_STRUCT then do
+        s <- (read_InvalidRequestException iprot)
+        read_Multiget_slice_result_fields iprot rec{f_Multiget_slice_result_ire=Just s}
+        else do
+          skip iprot _t144
+          read_Multiget_slice_result_fields iprot rec
+      2 -> if _t144 == T_STRUCT then do
+        s <- (read_UnavailableException iprot)
+        read_Multiget_slice_result_fields iprot rec{f_Multiget_slice_result_ue=Just s}
+        else do
+          skip iprot _t144
+          read_Multiget_slice_result_fields iprot rec
+      3 -> if _t144 == T_STRUCT then do
+        s <- (read_TimedOutException iprot)
+        read_Multiget_slice_result_fields iprot rec{f_Multiget_slice_result_te=Just s}
+        else do
+          skip iprot _t144
+          read_Multiget_slice_result_fields iprot rec
+      _ -> do
+        skip iprot _t144
+        readFieldEnd iprot
+        read_Multiget_slice_result_fields iprot rec
+read_Multiget_slice_result iprot = do
+  readStructBegin iprot
+  rec <- read_Multiget_slice_result_fields iprot (Multiget_slice_result{f_Multiget_slice_result_success=Nothing,f_Multiget_slice_result_ire=Nothing,f_Multiget_slice_result_ue=Nothing,f_Multiget_slice_result_te=Nothing})
+  readStructEnd iprot
+  return rec
+data Get_count_args = Get_count_args{f_Get_count_args_keyspace :: Maybe String,f_Get_count_args_key :: Maybe String,f_Get_count_args_column_parent :: Maybe ColumnParent,f_Get_count_args_consistency_level :: Maybe ConsistencyLevel} deriving (Show,Eq,Ord,Typeable)
+write_Get_count_args oprot rec = do
+  writeStructBegin oprot "Get_count_args"
+  case f_Get_count_args_keyspace rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("keyspace",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Get_count_args_key rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("key",T_STRING,2)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Get_count_args_column_parent rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column_parent",T_STRUCT,3)
+    write_ColumnParent oprot _v
+    writeFieldEnd oprot}
+  case f_Get_count_args_consistency_level rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("consistency_level",T_I32,4)
+    writeI32 oprot (fromEnum _v)
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_count_args_fields iprot rec = do
+  (_,_t159,_id160) <- readFieldBegin iprot
+  if _t159 == T_STOP then return rec else
+    case _id160 of 
+      1 -> if _t159 == T_STRING then do
+        s <- readString iprot
+        read_Get_count_args_fields iprot rec{f_Get_count_args_keyspace=Just s}
+        else do
+          skip iprot _t159
+          read_Get_count_args_fields iprot rec
+      2 -> if _t159 == T_STRING then do
+        s <- readString iprot
+        read_Get_count_args_fields iprot rec{f_Get_count_args_key=Just s}
+        else do
+          skip iprot _t159
+          read_Get_count_args_fields iprot rec
+      3 -> if _t159 == T_STRUCT then do
+        s <- (read_ColumnParent iprot)
+        read_Get_count_args_fields iprot rec{f_Get_count_args_column_parent=Just s}
+        else do
+          skip iprot _t159
+          read_Get_count_args_fields iprot rec
+      4 -> if _t159 == T_I32 then do
+        s <- (do {i <- readI32 iprot; return (toEnum i :: ConsistencyLevel)})
+        read_Get_count_args_fields iprot rec{f_Get_count_args_consistency_level=Just s}
+        else do
+          skip iprot _t159
+          read_Get_count_args_fields iprot rec
+      _ -> do
+        skip iprot _t159
+        readFieldEnd iprot
+        read_Get_count_args_fields iprot rec
+read_Get_count_args iprot = do
+  readStructBegin iprot
+  rec <- read_Get_count_args_fields iprot (Get_count_args{f_Get_count_args_keyspace=Nothing,f_Get_count_args_key=Nothing,f_Get_count_args_column_parent=Nothing,f_Get_count_args_consistency_level=Nothing})
+  readStructEnd iprot
+  return rec
+data Get_count_result = Get_count_result{f_Get_count_result_success :: Maybe Int,f_Get_count_result_ire :: Maybe InvalidRequestException,f_Get_count_result_ue :: Maybe UnavailableException,f_Get_count_result_te :: Maybe TimedOutException} deriving (Show,Eq,Ord,Typeable)
+write_Get_count_result oprot rec = do
+  writeStructBegin oprot "Get_count_result"
+  case f_Get_count_result_success rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("success",T_I32,0)
+    writeI32 oprot _v
+    writeFieldEnd oprot}
+  case f_Get_count_result_ire rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ire",T_STRUCT,1)
+    write_InvalidRequestException oprot _v
+    writeFieldEnd oprot}
+  case f_Get_count_result_ue rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ue",T_STRUCT,2)
+    write_UnavailableException oprot _v
+    writeFieldEnd oprot}
+  case f_Get_count_result_te rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("te",T_STRUCT,3)
+    write_TimedOutException oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_count_result_fields iprot rec = do
+  (_,_t164,_id165) <- readFieldBegin iprot
+  if _t164 == T_STOP then return rec else
+    case _id165 of 
+      0 -> if _t164 == T_I32 then do
+        s <- readI32 iprot
+        read_Get_count_result_fields iprot rec{f_Get_count_result_success=Just s}
+        else do
+          skip iprot _t164
+          read_Get_count_result_fields iprot rec
+      1 -> if _t164 == T_STRUCT then do
+        s <- (read_InvalidRequestException iprot)
+        read_Get_count_result_fields iprot rec{f_Get_count_result_ire=Just s}
+        else do
+          skip iprot _t164
+          read_Get_count_result_fields iprot rec
+      2 -> if _t164 == T_STRUCT then do
+        s <- (read_UnavailableException iprot)
+        read_Get_count_result_fields iprot rec{f_Get_count_result_ue=Just s}
+        else do
+          skip iprot _t164
+          read_Get_count_result_fields iprot rec
+      3 -> if _t164 == T_STRUCT then do
+        s <- (read_TimedOutException iprot)
+        read_Get_count_result_fields iprot rec{f_Get_count_result_te=Just s}
+        else do
+          skip iprot _t164
+          read_Get_count_result_fields iprot rec
+      _ -> do
+        skip iprot _t164
+        readFieldEnd iprot
+        read_Get_count_result_fields iprot rec
+read_Get_count_result iprot = do
+  readStructBegin iprot
+  rec <- read_Get_count_result_fields iprot (Get_count_result{f_Get_count_result_success=Nothing,f_Get_count_result_ire=Nothing,f_Get_count_result_ue=Nothing,f_Get_count_result_te=Nothing})
+  readStructEnd iprot
+  return rec
+data Get_key_range_args = Get_key_range_args{f_Get_key_range_args_keyspace :: Maybe String,f_Get_key_range_args_column_family :: Maybe String,f_Get_key_range_args_start :: Maybe String,f_Get_key_range_args_finish :: Maybe String,f_Get_key_range_args_count :: Maybe Int,f_Get_key_range_args_consistency_level :: Maybe ConsistencyLevel} deriving (Show,Eq,Ord,Typeable)
+write_Get_key_range_args oprot rec = do
+  writeStructBegin oprot "Get_key_range_args"
+  case f_Get_key_range_args_keyspace rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("keyspace",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Get_key_range_args_column_family rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column_family",T_STRING,2)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Get_key_range_args_start rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("start",T_STRING,3)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Get_key_range_args_finish rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("finish",T_STRING,4)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Get_key_range_args_count rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("count",T_I32,5)
+    writeI32 oprot _v
+    writeFieldEnd oprot}
+  case f_Get_key_range_args_consistency_level rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("consistency_level",T_I32,6)
+    writeI32 oprot (fromEnum _v)
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_key_range_args_fields iprot rec = do
+  (_,_t169,_id170) <- readFieldBegin iprot
+  if _t169 == T_STOP then return rec else
+    case _id170 of 
+      1 -> if _t169 == T_STRING then do
+        s <- readString iprot
+        read_Get_key_range_args_fields iprot rec{f_Get_key_range_args_keyspace=Just s}
+        else do
+          skip iprot _t169
+          read_Get_key_range_args_fields iprot rec
+      2 -> if _t169 == T_STRING then do
+        s <- readString iprot
+        read_Get_key_range_args_fields iprot rec{f_Get_key_range_args_column_family=Just s}
+        else do
+          skip iprot _t169
+          read_Get_key_range_args_fields iprot rec
+      3 -> if _t169 == T_STRING then do
+        s <- readString iprot
+        read_Get_key_range_args_fields iprot rec{f_Get_key_range_args_start=Just s}
+        else do
+          skip iprot _t169
+          read_Get_key_range_args_fields iprot rec
+      4 -> if _t169 == T_STRING then do
+        s <- readString iprot
+        read_Get_key_range_args_fields iprot rec{f_Get_key_range_args_finish=Just s}
+        else do
+          skip iprot _t169
+          read_Get_key_range_args_fields iprot rec
+      5 -> if _t169 == T_I32 then do
+        s <- readI32 iprot
+        read_Get_key_range_args_fields iprot rec{f_Get_key_range_args_count=Just s}
+        else do
+          skip iprot _t169
+          read_Get_key_range_args_fields iprot rec
+      6 -> if _t169 == T_I32 then do
+        s <- (do {i <- readI32 iprot; return (toEnum i :: ConsistencyLevel)})
+        read_Get_key_range_args_fields iprot rec{f_Get_key_range_args_consistency_level=Just s}
+        else do
+          skip iprot _t169
+          read_Get_key_range_args_fields iprot rec
+      _ -> do
+        skip iprot _t169
+        readFieldEnd iprot
+        read_Get_key_range_args_fields iprot rec
+read_Get_key_range_args iprot = do
+  readStructBegin iprot
+  rec <- read_Get_key_range_args_fields iprot (Get_key_range_args{f_Get_key_range_args_keyspace=Nothing,f_Get_key_range_args_column_family=Nothing,f_Get_key_range_args_start=Nothing,f_Get_key_range_args_finish=Nothing,f_Get_key_range_args_count=Nothing,f_Get_key_range_args_consistency_level=Nothing})
+  readStructEnd iprot
+  return rec
+data Get_key_range_result = Get_key_range_result{f_Get_key_range_result_success :: Maybe [String],f_Get_key_range_result_ire :: Maybe InvalidRequestException,f_Get_key_range_result_ue :: Maybe UnavailableException,f_Get_key_range_result_te :: Maybe TimedOutException} deriving (Show,Eq,Ord,Typeable)
+write_Get_key_range_result oprot rec = do
+  writeStructBegin oprot "Get_key_range_result"
+  case f_Get_key_range_result_success rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("success",T_LIST,0)
+    (let {f [] = return (); f (_viter173:t) = do {writeString oprot _viter173;f t}} in do {writeListBegin oprot (T_STRING,length _v); f _v;writeListEnd oprot})
+    writeFieldEnd oprot}
+  case f_Get_key_range_result_ire rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ire",T_STRUCT,1)
+    write_InvalidRequestException oprot _v
+    writeFieldEnd oprot}
+  case f_Get_key_range_result_ue rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ue",T_STRUCT,2)
+    write_UnavailableException oprot _v
+    writeFieldEnd oprot}
+  case f_Get_key_range_result_te rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("te",T_STRUCT,3)
+    write_TimedOutException oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_key_range_result_fields iprot rec = do
+  (_,_t175,_id176) <- readFieldBegin iprot
+  if _t175 == T_STOP then return rec else
+    case _id176 of 
+      0 -> if _t175 == T_LIST then do
+        s <- (let {f 0 = return []; f n = do {v <- readString iprot;r <- f (n-1); return $ v:r}} in do {(_etype180,_size177) <- readListBegin iprot; f _size177})
+        read_Get_key_range_result_fields iprot rec{f_Get_key_range_result_success=Just s}
+        else do
+          skip iprot _t175
+          read_Get_key_range_result_fields iprot rec
+      1 -> if _t175 == T_STRUCT then do
+        s <- (read_InvalidRequestException iprot)
+        read_Get_key_range_result_fields iprot rec{f_Get_key_range_result_ire=Just s}
+        else do
+          skip iprot _t175
+          read_Get_key_range_result_fields iprot rec
+      2 -> if _t175 == T_STRUCT then do
+        s <- (read_UnavailableException iprot)
+        read_Get_key_range_result_fields iprot rec{f_Get_key_range_result_ue=Just s}
+        else do
+          skip iprot _t175
+          read_Get_key_range_result_fields iprot rec
+      3 -> if _t175 == T_STRUCT then do
+        s <- (read_TimedOutException iprot)
+        read_Get_key_range_result_fields iprot rec{f_Get_key_range_result_te=Just s}
+        else do
+          skip iprot _t175
+          read_Get_key_range_result_fields iprot rec
+      _ -> do
+        skip iprot _t175
+        readFieldEnd iprot
+        read_Get_key_range_result_fields iprot rec
+read_Get_key_range_result iprot = do
+  readStructBegin iprot
+  rec <- read_Get_key_range_result_fields iprot (Get_key_range_result{f_Get_key_range_result_success=Nothing,f_Get_key_range_result_ire=Nothing,f_Get_key_range_result_ue=Nothing,f_Get_key_range_result_te=Nothing})
+  readStructEnd iprot
+  return rec
+data Get_range_slice_args = Get_range_slice_args{f_Get_range_slice_args_keyspace :: Maybe String,f_Get_range_slice_args_column_parent :: Maybe ColumnParent,f_Get_range_slice_args_predicate :: Maybe SlicePredicate,f_Get_range_slice_args_start_key :: Maybe String,f_Get_range_slice_args_finish_key :: Maybe String,f_Get_range_slice_args_row_count :: Maybe Int,f_Get_range_slice_args_consistency_level :: Maybe ConsistencyLevel} deriving (Show,Eq,Ord,Typeable)
+write_Get_range_slice_args oprot rec = do
+  writeStructBegin oprot "Get_range_slice_args"
+  case f_Get_range_slice_args_keyspace rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("keyspace",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Get_range_slice_args_column_parent rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column_parent",T_STRUCT,2)
+    write_ColumnParent oprot _v
+    writeFieldEnd oprot}
+  case f_Get_range_slice_args_predicate rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("predicate",T_STRUCT,3)
+    write_SlicePredicate oprot _v
+    writeFieldEnd oprot}
+  case f_Get_range_slice_args_start_key rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("start_key",T_STRING,4)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Get_range_slice_args_finish_key rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("finish_key",T_STRING,5)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Get_range_slice_args_row_count rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("row_count",T_I32,6)
+    writeI32 oprot _v
+    writeFieldEnd oprot}
+  case f_Get_range_slice_args_consistency_level rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("consistency_level",T_I32,7)
+    writeI32 oprot (fromEnum _v)
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_range_slice_args_fields iprot rec = do
+  (_,_t185,_id186) <- readFieldBegin iprot
+  if _t185 == T_STOP then return rec else
+    case _id186 of 
+      1 -> if _t185 == T_STRING then do
+        s <- readString iprot
+        read_Get_range_slice_args_fields iprot rec{f_Get_range_slice_args_keyspace=Just s}
+        else do
+          skip iprot _t185
+          read_Get_range_slice_args_fields iprot rec
+      2 -> if _t185 == T_STRUCT then do
+        s <- (read_ColumnParent iprot)
+        read_Get_range_slice_args_fields iprot rec{f_Get_range_slice_args_column_parent=Just s}
+        else do
+          skip iprot _t185
+          read_Get_range_slice_args_fields iprot rec
+      3 -> if _t185 == T_STRUCT then do
+        s <- (read_SlicePredicate iprot)
+        read_Get_range_slice_args_fields iprot rec{f_Get_range_slice_args_predicate=Just s}
+        else do
+          skip iprot _t185
+          read_Get_range_slice_args_fields iprot rec
+      4 -> if _t185 == T_STRING then do
+        s <- readString iprot
+        read_Get_range_slice_args_fields iprot rec{f_Get_range_slice_args_start_key=Just s}
+        else do
+          skip iprot _t185
+          read_Get_range_slice_args_fields iprot rec
+      5 -> if _t185 == T_STRING then do
+        s <- readString iprot
+        read_Get_range_slice_args_fields iprot rec{f_Get_range_slice_args_finish_key=Just s}
+        else do
+          skip iprot _t185
+          read_Get_range_slice_args_fields iprot rec
+      6 -> if _t185 == T_I32 then do
+        s <- readI32 iprot
+        read_Get_range_slice_args_fields iprot rec{f_Get_range_slice_args_row_count=Just s}
+        else do
+          skip iprot _t185
+          read_Get_range_slice_args_fields iprot rec
+      7 -> if _t185 == T_I32 then do
+        s <- (do {i <- readI32 iprot; return (toEnum i :: ConsistencyLevel)})
+        read_Get_range_slice_args_fields iprot rec{f_Get_range_slice_args_consistency_level=Just s}
+        else do
+          skip iprot _t185
+          read_Get_range_slice_args_fields iprot rec
+      _ -> do
+        skip iprot _t185
+        readFieldEnd iprot
+        read_Get_range_slice_args_fields iprot rec
+read_Get_range_slice_args iprot = do
+  readStructBegin iprot
+  rec <- read_Get_range_slice_args_fields iprot (Get_range_slice_args{f_Get_range_slice_args_keyspace=Nothing,f_Get_range_slice_args_column_parent=Nothing,f_Get_range_slice_args_predicate=Nothing,f_Get_range_slice_args_start_key=Nothing,f_Get_range_slice_args_finish_key=Nothing,f_Get_range_slice_args_row_count=Nothing,f_Get_range_slice_args_consistency_level=Nothing})
+  readStructEnd iprot
+  return rec
+data Get_range_slice_result = Get_range_slice_result{f_Get_range_slice_result_success :: Maybe [KeySlice],f_Get_range_slice_result_ire :: Maybe InvalidRequestException,f_Get_range_slice_result_ue :: Maybe UnavailableException,f_Get_range_slice_result_te :: Maybe TimedOutException} deriving (Show,Eq,Ord,Typeable)
+write_Get_range_slice_result oprot rec = do
+  writeStructBegin oprot "Get_range_slice_result"
+  case f_Get_range_slice_result_success rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("success",T_LIST,0)
+    (let {f [] = return (); f (_viter189:t) = do {write_KeySlice oprot _viter189;f t}} in do {writeListBegin oprot (T_STRUCT,length _v); f _v;writeListEnd oprot})
+    writeFieldEnd oprot}
+  case f_Get_range_slice_result_ire rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ire",T_STRUCT,1)
+    write_InvalidRequestException oprot _v
+    writeFieldEnd oprot}
+  case f_Get_range_slice_result_ue rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ue",T_STRUCT,2)
+    write_UnavailableException oprot _v
+    writeFieldEnd oprot}
+  case f_Get_range_slice_result_te rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("te",T_STRUCT,3)
+    write_TimedOutException oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_range_slice_result_fields iprot rec = do
+  (_,_t191,_id192) <- readFieldBegin iprot
+  if _t191 == T_STOP then return rec else
+    case _id192 of 
+      0 -> if _t191 == T_LIST then do
+        s <- (let {f 0 = return []; f n = do {v <- (read_KeySlice iprot);r <- f (n-1); return $ v:r}} in do {(_etype196,_size193) <- readListBegin iprot; f _size193})
+        read_Get_range_slice_result_fields iprot rec{f_Get_range_slice_result_success=Just s}
+        else do
+          skip iprot _t191
+          read_Get_range_slice_result_fields iprot rec
+      1 -> if _t191 == T_STRUCT then do
+        s <- (read_InvalidRequestException iprot)
+        read_Get_range_slice_result_fields iprot rec{f_Get_range_slice_result_ire=Just s}
+        else do
+          skip iprot _t191
+          read_Get_range_slice_result_fields iprot rec
+      2 -> if _t191 == T_STRUCT then do
+        s <- (read_UnavailableException iprot)
+        read_Get_range_slice_result_fields iprot rec{f_Get_range_slice_result_ue=Just s}
+        else do
+          skip iprot _t191
+          read_Get_range_slice_result_fields iprot rec
+      3 -> if _t191 == T_STRUCT then do
+        s <- (read_TimedOutException iprot)
+        read_Get_range_slice_result_fields iprot rec{f_Get_range_slice_result_te=Just s}
+        else do
+          skip iprot _t191
+          read_Get_range_slice_result_fields iprot rec
+      _ -> do
+        skip iprot _t191
+        readFieldEnd iprot
+        read_Get_range_slice_result_fields iprot rec
+read_Get_range_slice_result iprot = do
+  readStructBegin iprot
+  rec <- read_Get_range_slice_result_fields iprot (Get_range_slice_result{f_Get_range_slice_result_success=Nothing,f_Get_range_slice_result_ire=Nothing,f_Get_range_slice_result_ue=Nothing,f_Get_range_slice_result_te=Nothing})
+  readStructEnd iprot
+  return rec
+data Insert_args = Insert_args{f_Insert_args_keyspace :: Maybe String,f_Insert_args_key :: Maybe String,f_Insert_args_column_path :: Maybe ColumnPath,f_Insert_args_value :: Maybe String,f_Insert_args_timestamp :: Maybe Int64,f_Insert_args_consistency_level :: Maybe ConsistencyLevel} deriving (Show,Eq,Ord,Typeable)
+write_Insert_args oprot rec = do
+  writeStructBegin oprot "Insert_args"
+  case f_Insert_args_keyspace rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("keyspace",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Insert_args_key rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("key",T_STRING,2)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Insert_args_column_path rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column_path",T_STRUCT,3)
+    write_ColumnPath oprot _v
+    writeFieldEnd oprot}
+  case f_Insert_args_value rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("value",T_STRING,4)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Insert_args_timestamp rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("timestamp",T_I64,5)
+    writeI64 oprot _v
+    writeFieldEnd oprot}
+  case f_Insert_args_consistency_level rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("consistency_level",T_I32,6)
+    writeI32 oprot (fromEnum _v)
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Insert_args_fields iprot rec = do
+  (_,_t201,_id202) <- readFieldBegin iprot
+  if _t201 == T_STOP then return rec else
+    case _id202 of 
+      1 -> if _t201 == T_STRING then do
+        s <- readString iprot
+        read_Insert_args_fields iprot rec{f_Insert_args_keyspace=Just s}
+        else do
+          skip iprot _t201
+          read_Insert_args_fields iprot rec
+      2 -> if _t201 == T_STRING then do
+        s <- readString iprot
+        read_Insert_args_fields iprot rec{f_Insert_args_key=Just s}
+        else do
+          skip iprot _t201
+          read_Insert_args_fields iprot rec
+      3 -> if _t201 == T_STRUCT then do
+        s <- (read_ColumnPath iprot)
+        read_Insert_args_fields iprot rec{f_Insert_args_column_path=Just s}
+        else do
+          skip iprot _t201
+          read_Insert_args_fields iprot rec
+      4 -> if _t201 == T_STRING then do
+        s <- readString iprot
+        read_Insert_args_fields iprot rec{f_Insert_args_value=Just s}
+        else do
+          skip iprot _t201
+          read_Insert_args_fields iprot rec
+      5 -> if _t201 == T_I64 then do
+        s <- readI64 iprot
+        read_Insert_args_fields iprot rec{f_Insert_args_timestamp=Just s}
+        else do
+          skip iprot _t201
+          read_Insert_args_fields iprot rec
+      6 -> if _t201 == T_I32 then do
+        s <- (do {i <- readI32 iprot; return (toEnum i :: ConsistencyLevel)})
+        read_Insert_args_fields iprot rec{f_Insert_args_consistency_level=Just s}
+        else do
+          skip iprot _t201
+          read_Insert_args_fields iprot rec
+      _ -> do
+        skip iprot _t201
+        readFieldEnd iprot
+        read_Insert_args_fields iprot rec
+read_Insert_args iprot = do
+  readStructBegin iprot
+  rec <- read_Insert_args_fields iprot (Insert_args{f_Insert_args_keyspace=Nothing,f_Insert_args_key=Nothing,f_Insert_args_column_path=Nothing,f_Insert_args_value=Nothing,f_Insert_args_timestamp=Nothing,f_Insert_args_consistency_level=Nothing})
+  readStructEnd iprot
+  return rec
+data Insert_result = Insert_result{f_Insert_result_ire :: Maybe InvalidRequestException,f_Insert_result_ue :: Maybe UnavailableException,f_Insert_result_te :: Maybe TimedOutException} deriving (Show,Eq,Ord,Typeable)
+write_Insert_result oprot rec = do
+  writeStructBegin oprot "Insert_result"
+  case f_Insert_result_ire rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ire",T_STRUCT,1)
+    write_InvalidRequestException oprot _v
+    writeFieldEnd oprot}
+  case f_Insert_result_ue rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ue",T_STRUCT,2)
+    write_UnavailableException oprot _v
+    writeFieldEnd oprot}
+  case f_Insert_result_te rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("te",T_STRUCT,3)
+    write_TimedOutException oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Insert_result_fields iprot rec = do
+  (_,_t206,_id207) <- readFieldBegin iprot
+  if _t206 == T_STOP then return rec else
+    case _id207 of 
+      1 -> if _t206 == T_STRUCT then do
+        s <- (read_InvalidRequestException iprot)
+        read_Insert_result_fields iprot rec{f_Insert_result_ire=Just s}
+        else do
+          skip iprot _t206
+          read_Insert_result_fields iprot rec
+      2 -> if _t206 == T_STRUCT then do
+        s <- (read_UnavailableException iprot)
+        read_Insert_result_fields iprot rec{f_Insert_result_ue=Just s}
+        else do
+          skip iprot _t206
+          read_Insert_result_fields iprot rec
+      3 -> if _t206 == T_STRUCT then do
+        s <- (read_TimedOutException iprot)
+        read_Insert_result_fields iprot rec{f_Insert_result_te=Just s}
+        else do
+          skip iprot _t206
+          read_Insert_result_fields iprot rec
+      _ -> do
+        skip iprot _t206
+        readFieldEnd iprot
+        read_Insert_result_fields iprot rec
+read_Insert_result iprot = do
+  readStructBegin iprot
+  rec <- read_Insert_result_fields iprot (Insert_result{f_Insert_result_ire=Nothing,f_Insert_result_ue=Nothing,f_Insert_result_te=Nothing})
+  readStructEnd iprot
+  return rec
+data Batch_insert_args = Batch_insert_args{f_Batch_insert_args_keyspace :: Maybe String,f_Batch_insert_args_key :: Maybe String,f_Batch_insert_args_cfmap :: Maybe (Map.Map String [ColumnOrSuperColumn]),f_Batch_insert_args_consistency_level :: Maybe ConsistencyLevel} deriving (Show,Eq,Ord,Typeable)
+write_Batch_insert_args oprot rec = do
+  writeStructBegin oprot "Batch_insert_args"
+  case f_Batch_insert_args_keyspace rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("keyspace",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Batch_insert_args_key rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("key",T_STRING,2)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Batch_insert_args_cfmap rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("cfmap",T_MAP,3)
+    (let {f [] = return (); f ((_kiter210,_viter211):t) = do {do {writeString oprot _kiter210;(let {f [] = return (); f (_viter212:t) = do {write_ColumnOrSuperColumn oprot _viter212;f t}} in do {writeListBegin oprot (T_STRUCT,length _viter211); f _viter211;writeListEnd oprot})};f t}} in do {writeMapBegin oprot (T_STRING,T_LIST,Map.size _v); f (Map.toList _v);writeMapEnd oprot})
+    writeFieldEnd oprot}
+  case f_Batch_insert_args_consistency_level rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("consistency_level",T_I32,4)
+    writeI32 oprot (fromEnum _v)
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Batch_insert_args_fields iprot rec = do
+  (_,_t214,_id215) <- readFieldBegin iprot
+  if _t214 == T_STOP then return rec else
+    case _id215 of 
+      1 -> if _t214 == T_STRING then do
+        s <- readString iprot
+        read_Batch_insert_args_fields iprot rec{f_Batch_insert_args_keyspace=Just s}
+        else do
+          skip iprot _t214
+          read_Batch_insert_args_fields iprot rec
+      2 -> if _t214 == T_STRING then do
+        s <- readString iprot
+        read_Batch_insert_args_fields iprot rec{f_Batch_insert_args_key=Just s}
+        else do
+          skip iprot _t214
+          read_Batch_insert_args_fields iprot rec
+      3 -> if _t214 == T_MAP then do
+        s <- (let {f 0 = return []; f n = do {k <- readString iprot; v <- (let {f 0 = return []; f n = do {v <- (read_ColumnOrSuperColumn iprot);r <- f (n-1); return $ v:r}} in do {(_etype224,_size221) <- readListBegin iprot; f _size221});r <- f (n-1); return $ (k,v):r}} in do {(_ktype217,_vtype218,_size216) <- readMapBegin iprot; l <- f _size216; return $ Map.fromList l})
+        read_Batch_insert_args_fields iprot rec{f_Batch_insert_args_cfmap=Just s}
+        else do
+          skip iprot _t214
+          read_Batch_insert_args_fields iprot rec
+      4 -> if _t214 == T_I32 then do
+        s <- (do {i <- readI32 iprot; return (toEnum i :: ConsistencyLevel)})
+        read_Batch_insert_args_fields iprot rec{f_Batch_insert_args_consistency_level=Just s}
+        else do
+          skip iprot _t214
+          read_Batch_insert_args_fields iprot rec
+      _ -> do
+        skip iprot _t214
+        readFieldEnd iprot
+        read_Batch_insert_args_fields iprot rec
+read_Batch_insert_args iprot = do
+  readStructBegin iprot
+  rec <- read_Batch_insert_args_fields iprot (Batch_insert_args{f_Batch_insert_args_keyspace=Nothing,f_Batch_insert_args_key=Nothing,f_Batch_insert_args_cfmap=Nothing,f_Batch_insert_args_consistency_level=Nothing})
+  readStructEnd iprot
+  return rec
+data Batch_insert_result = Batch_insert_result{f_Batch_insert_result_ire :: Maybe InvalidRequestException,f_Batch_insert_result_ue :: Maybe UnavailableException,f_Batch_insert_result_te :: Maybe TimedOutException} deriving (Show,Eq,Ord,Typeable)
+write_Batch_insert_result oprot rec = do
+  writeStructBegin oprot "Batch_insert_result"
+  case f_Batch_insert_result_ire rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ire",T_STRUCT,1)
+    write_InvalidRequestException oprot _v
+    writeFieldEnd oprot}
+  case f_Batch_insert_result_ue rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ue",T_STRUCT,2)
+    write_UnavailableException oprot _v
+    writeFieldEnd oprot}
+  case f_Batch_insert_result_te rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("te",T_STRUCT,3)
+    write_TimedOutException oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Batch_insert_result_fields iprot rec = do
+  (_,_t229,_id230) <- readFieldBegin iprot
+  if _t229 == T_STOP then return rec else
+    case _id230 of 
+      1 -> if _t229 == T_STRUCT then do
+        s <- (read_InvalidRequestException iprot)
+        read_Batch_insert_result_fields iprot rec{f_Batch_insert_result_ire=Just s}
+        else do
+          skip iprot _t229
+          read_Batch_insert_result_fields iprot rec
+      2 -> if _t229 == T_STRUCT then do
+        s <- (read_UnavailableException iprot)
+        read_Batch_insert_result_fields iprot rec{f_Batch_insert_result_ue=Just s}
+        else do
+          skip iprot _t229
+          read_Batch_insert_result_fields iprot rec
+      3 -> if _t229 == T_STRUCT then do
+        s <- (read_TimedOutException iprot)
+        read_Batch_insert_result_fields iprot rec{f_Batch_insert_result_te=Just s}
+        else do
+          skip iprot _t229
+          read_Batch_insert_result_fields iprot rec
+      _ -> do
+        skip iprot _t229
+        readFieldEnd iprot
+        read_Batch_insert_result_fields iprot rec
+read_Batch_insert_result iprot = do
+  readStructBegin iprot
+  rec <- read_Batch_insert_result_fields iprot (Batch_insert_result{f_Batch_insert_result_ire=Nothing,f_Batch_insert_result_ue=Nothing,f_Batch_insert_result_te=Nothing})
+  readStructEnd iprot
+  return rec
+data Remove_args = Remove_args{f_Remove_args_keyspace :: Maybe String,f_Remove_args_key :: Maybe String,f_Remove_args_column_path :: Maybe ColumnPath,f_Remove_args_timestamp :: Maybe Int64,f_Remove_args_consistency_level :: Maybe ConsistencyLevel} deriving (Show,Eq,Ord,Typeable)
+write_Remove_args oprot rec = do
+  writeStructBegin oprot "Remove_args"
+  case f_Remove_args_keyspace rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("keyspace",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Remove_args_key rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("key",T_STRING,2)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Remove_args_column_path rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column_path",T_STRUCT,3)
+    write_ColumnPath oprot _v
+    writeFieldEnd oprot}
+  case f_Remove_args_timestamp rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("timestamp",T_I64,4)
+    writeI64 oprot _v
+    writeFieldEnd oprot}
+  case f_Remove_args_consistency_level rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("consistency_level",T_I32,5)
+    writeI32 oprot (fromEnum _v)
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Remove_args_fields iprot rec = do
+  (_,_t234,_id235) <- readFieldBegin iprot
+  if _t234 == T_STOP then return rec else
+    case _id235 of 
+      1 -> if _t234 == T_STRING then do
+        s <- readString iprot
+        read_Remove_args_fields iprot rec{f_Remove_args_keyspace=Just s}
+        else do
+          skip iprot _t234
+          read_Remove_args_fields iprot rec
+      2 -> if _t234 == T_STRING then do
+        s <- readString iprot
+        read_Remove_args_fields iprot rec{f_Remove_args_key=Just s}
+        else do
+          skip iprot _t234
+          read_Remove_args_fields iprot rec
+      3 -> if _t234 == T_STRUCT then do
+        s <- (read_ColumnPath iprot)
+        read_Remove_args_fields iprot rec{f_Remove_args_column_path=Just s}
+        else do
+          skip iprot _t234
+          read_Remove_args_fields iprot rec
+      4 -> if _t234 == T_I64 then do
+        s <- readI64 iprot
+        read_Remove_args_fields iprot rec{f_Remove_args_timestamp=Just s}
+        else do
+          skip iprot _t234
+          read_Remove_args_fields iprot rec
+      5 -> if _t234 == T_I32 then do
+        s <- (do {i <- readI32 iprot; return (toEnum i :: ConsistencyLevel)})
+        read_Remove_args_fields iprot rec{f_Remove_args_consistency_level=Just s}
+        else do
+          skip iprot _t234
+          read_Remove_args_fields iprot rec
+      _ -> do
+        skip iprot _t234
+        readFieldEnd iprot
+        read_Remove_args_fields iprot rec
+read_Remove_args iprot = do
+  readStructBegin iprot
+  rec <- read_Remove_args_fields iprot (Remove_args{f_Remove_args_keyspace=Nothing,f_Remove_args_key=Nothing,f_Remove_args_column_path=Nothing,f_Remove_args_timestamp=Nothing,f_Remove_args_consistency_level=Nothing})
+  readStructEnd iprot
+  return rec
+data Remove_result = Remove_result{f_Remove_result_ire :: Maybe InvalidRequestException,f_Remove_result_ue :: Maybe UnavailableException,f_Remove_result_te :: Maybe TimedOutException} deriving (Show,Eq,Ord,Typeable)
+write_Remove_result oprot rec = do
+  writeStructBegin oprot "Remove_result"
+  case f_Remove_result_ire rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ire",T_STRUCT,1)
+    write_InvalidRequestException oprot _v
+    writeFieldEnd oprot}
+  case f_Remove_result_ue rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("ue",T_STRUCT,2)
+    write_UnavailableException oprot _v
+    writeFieldEnd oprot}
+  case f_Remove_result_te rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("te",T_STRUCT,3)
+    write_TimedOutException oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Remove_result_fields iprot rec = do
+  (_,_t239,_id240) <- readFieldBegin iprot
+  if _t239 == T_STOP then return rec else
+    case _id240 of 
+      1 -> if _t239 == T_STRUCT then do
+        s <- (read_InvalidRequestException iprot)
+        read_Remove_result_fields iprot rec{f_Remove_result_ire=Just s}
+        else do
+          skip iprot _t239
+          read_Remove_result_fields iprot rec
+      2 -> if _t239 == T_STRUCT then do
+        s <- (read_UnavailableException iprot)
+        read_Remove_result_fields iprot rec{f_Remove_result_ue=Just s}
+        else do
+          skip iprot _t239
+          read_Remove_result_fields iprot rec
+      3 -> if _t239 == T_STRUCT then do
+        s <- (read_TimedOutException iprot)
+        read_Remove_result_fields iprot rec{f_Remove_result_te=Just s}
+        else do
+          skip iprot _t239
+          read_Remove_result_fields iprot rec
+      _ -> do
+        skip iprot _t239
+        readFieldEnd iprot
+        read_Remove_result_fields iprot rec
+read_Remove_result iprot = do
+  readStructBegin iprot
+  rec <- read_Remove_result_fields iprot (Remove_result{f_Remove_result_ire=Nothing,f_Remove_result_ue=Nothing,f_Remove_result_te=Nothing})
+  readStructEnd iprot
+  return rec
+data Get_string_property_args = Get_string_property_args{f_Get_string_property_args_property :: Maybe String} deriving (Show,Eq,Ord,Typeable)
+write_Get_string_property_args oprot rec = do
+  writeStructBegin oprot "Get_string_property_args"
+  case f_Get_string_property_args_property rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("property",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_string_property_args_fields iprot rec = do
+  (_,_t244,_id245) <- readFieldBegin iprot
+  if _t244 == T_STOP then return rec else
+    case _id245 of 
+      1 -> if _t244 == T_STRING then do
+        s <- readString iprot
+        read_Get_string_property_args_fields iprot rec{f_Get_string_property_args_property=Just s}
+        else do
+          skip iprot _t244
+          read_Get_string_property_args_fields iprot rec
+      _ -> do
+        skip iprot _t244
+        readFieldEnd iprot
+        read_Get_string_property_args_fields iprot rec
+read_Get_string_property_args iprot = do
+  readStructBegin iprot
+  rec <- read_Get_string_property_args_fields iprot (Get_string_property_args{f_Get_string_property_args_property=Nothing})
+  readStructEnd iprot
+  return rec
+data Get_string_property_result = Get_string_property_result{f_Get_string_property_result_success :: Maybe String} deriving (Show,Eq,Ord,Typeable)
+write_Get_string_property_result oprot rec = do
+  writeStructBegin oprot "Get_string_property_result"
+  case f_Get_string_property_result_success rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("success",T_STRING,0)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_string_property_result_fields iprot rec = do
+  (_,_t249,_id250) <- readFieldBegin iprot
+  if _t249 == T_STOP then return rec else
+    case _id250 of 
+      0 -> if _t249 == T_STRING then do
+        s <- readString iprot
+        read_Get_string_property_result_fields iprot rec{f_Get_string_property_result_success=Just s}
+        else do
+          skip iprot _t249
+          read_Get_string_property_result_fields iprot rec
+      _ -> do
+        skip iprot _t249
+        readFieldEnd iprot
+        read_Get_string_property_result_fields iprot rec
+read_Get_string_property_result iprot = do
+  readStructBegin iprot
+  rec <- read_Get_string_property_result_fields iprot (Get_string_property_result{f_Get_string_property_result_success=Nothing})
+  readStructEnd iprot
+  return rec
+data Get_string_list_property_args = Get_string_list_property_args{f_Get_string_list_property_args_property :: Maybe String} deriving (Show,Eq,Ord,Typeable)
+write_Get_string_list_property_args oprot rec = do
+  writeStructBegin oprot "Get_string_list_property_args"
+  case f_Get_string_list_property_args_property rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("property",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_string_list_property_args_fields iprot rec = do
+  (_,_t254,_id255) <- readFieldBegin iprot
+  if _t254 == T_STOP then return rec else
+    case _id255 of 
+      1 -> if _t254 == T_STRING then do
+        s <- readString iprot
+        read_Get_string_list_property_args_fields iprot rec{f_Get_string_list_property_args_property=Just s}
+        else do
+          skip iprot _t254
+          read_Get_string_list_property_args_fields iprot rec
+      _ -> do
+        skip iprot _t254
+        readFieldEnd iprot
+        read_Get_string_list_property_args_fields iprot rec
+read_Get_string_list_property_args iprot = do
+  readStructBegin iprot
+  rec <- read_Get_string_list_property_args_fields iprot (Get_string_list_property_args{f_Get_string_list_property_args_property=Nothing})
+  readStructEnd iprot
+  return rec
+data Get_string_list_property_result = Get_string_list_property_result{f_Get_string_list_property_result_success :: Maybe [String]} deriving (Show,Eq,Ord,Typeable)
+write_Get_string_list_property_result oprot rec = do
+  writeStructBegin oprot "Get_string_list_property_result"
+  case f_Get_string_list_property_result_success rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("success",T_LIST,0)
+    (let {f [] = return (); f (_viter258:t) = do {writeString oprot _viter258;f t}} in do {writeListBegin oprot (T_STRING,length _v); f _v;writeListEnd oprot})
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Get_string_list_property_result_fields iprot rec = do
+  (_,_t260,_id261) <- readFieldBegin iprot
+  if _t260 == T_STOP then return rec else
+    case _id261 of 
+      0 -> if _t260 == T_LIST then do
+        s <- (let {f 0 = return []; f n = do {v <- readString iprot;r <- f (n-1); return $ v:r}} in do {(_etype265,_size262) <- readListBegin iprot; f _size262})
+        read_Get_string_list_property_result_fields iprot rec{f_Get_string_list_property_result_success=Just s}
+        else do
+          skip iprot _t260
+          read_Get_string_list_property_result_fields iprot rec
+      _ -> do
+        skip iprot _t260
+        readFieldEnd iprot
+        read_Get_string_list_property_result_fields iprot rec
+read_Get_string_list_property_result iprot = do
+  readStructBegin iprot
+  rec <- read_Get_string_list_property_result_fields iprot (Get_string_list_property_result{f_Get_string_list_property_result_success=Nothing})
+  readStructEnd iprot
+  return rec
+data Describe_keyspace_args = Describe_keyspace_args{f_Describe_keyspace_args_keyspace :: Maybe String} deriving (Show,Eq,Ord,Typeable)
+write_Describe_keyspace_args oprot rec = do
+  writeStructBegin oprot "Describe_keyspace_args"
+  case f_Describe_keyspace_args_keyspace rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("keyspace",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Describe_keyspace_args_fields iprot rec = do
+  (_,_t270,_id271) <- readFieldBegin iprot
+  if _t270 == T_STOP then return rec else
+    case _id271 of 
+      1 -> if _t270 == T_STRING then do
+        s <- readString iprot
+        read_Describe_keyspace_args_fields iprot rec{f_Describe_keyspace_args_keyspace=Just s}
+        else do
+          skip iprot _t270
+          read_Describe_keyspace_args_fields iprot rec
+      _ -> do
+        skip iprot _t270
+        readFieldEnd iprot
+        read_Describe_keyspace_args_fields iprot rec
+read_Describe_keyspace_args iprot = do
+  readStructBegin iprot
+  rec <- read_Describe_keyspace_args_fields iprot (Describe_keyspace_args{f_Describe_keyspace_args_keyspace=Nothing})
+  readStructEnd iprot
+  return rec
+data Describe_keyspace_result = Describe_keyspace_result{f_Describe_keyspace_result_success :: Maybe (Map.Map String (Map.Map String String)),f_Describe_keyspace_result_nfe :: Maybe NotFoundException} deriving (Show,Eq,Ord,Typeable)
+write_Describe_keyspace_result oprot rec = do
+  writeStructBegin oprot "Describe_keyspace_result"
+  case f_Describe_keyspace_result_success rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("success",T_MAP,0)
+    (let {f [] = return (); f ((_kiter274,_viter275):t) = do {do {writeString oprot _kiter274;(let {f [] = return (); f ((_kiter276,_viter277):t) = do {do {writeString oprot _kiter276;writeString oprot _viter277};f t}} in do {writeMapBegin oprot (T_STRING,T_STRING,Map.size _viter275); f (Map.toList _viter275);writeMapEnd oprot})};f t}} in do {writeMapBegin oprot (T_STRING,T_MAP,Map.size _v); f (Map.toList _v);writeMapEnd oprot})
+    writeFieldEnd oprot}
+  case f_Describe_keyspace_result_nfe rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("nfe",T_STRUCT,1)
+    write_NotFoundException oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Describe_keyspace_result_fields iprot rec = do
+  (_,_t279,_id280) <- readFieldBegin iprot
+  if _t279 == T_STOP then return rec else
+    case _id280 of 
+      0 -> if _t279 == T_MAP then do
+        s <- (let {f 0 = return []; f n = do {k <- readString iprot; v <- (let {f 0 = return []; f n = do {k <- readString iprot; v <- readString iprot;r <- f (n-1); return $ (k,v):r}} in do {(_ktype287,_vtype288,_size286) <- readMapBegin iprot; l <- f _size286; return $ Map.fromList l});r <- f (n-1); return $ (k,v):r}} in do {(_ktype282,_vtype283,_size281) <- readMapBegin iprot; l <- f _size281; return $ Map.fromList l})
+        read_Describe_keyspace_result_fields iprot rec{f_Describe_keyspace_result_success=Just s}
+        else do
+          skip iprot _t279
+          read_Describe_keyspace_result_fields iprot rec
+      1 -> if _t279 == T_STRUCT then do
+        s <- (read_NotFoundException iprot)
+        read_Describe_keyspace_result_fields iprot rec{f_Describe_keyspace_result_nfe=Just s}
+        else do
+          skip iprot _t279
+          read_Describe_keyspace_result_fields iprot rec
+      _ -> do
+        skip iprot _t279
+        readFieldEnd iprot
+        read_Describe_keyspace_result_fields iprot rec
+read_Describe_keyspace_result iprot = do
+  readStructBegin iprot
+  rec <- read_Describe_keyspace_result_fields iprot (Describe_keyspace_result{f_Describe_keyspace_result_success=Nothing,f_Describe_keyspace_result_nfe=Nothing})
+  readStructEnd iprot
+  return rec
+process_get (seqid, iprot, oprot, handler) = do
+  args <- read_Get_args iprot
+  readMessageEnd iprot
+  rs <- return (Get_result Nothing Nothing Nothing Nothing Nothing)
+  res <- (Control.Exception.catch
+    (Control.Exception.catch
+      (Control.Exception.catch
+        (Control.Exception.catch
+          (do
+            res <- Iface.get handler (f_Get_args_keyspace args) (f_Get_args_key args) (f_Get_args_column_path args) (f_Get_args_consistency_level args)
+            return rs{f_Get_result_success= Just res})
+          (\e  -> 
+            return rs{f_Get_result_ire =Just e}))
+        (\e  -> 
+          return rs{f_Get_result_nfe =Just e}))
+      (\e  -> 
+        return rs{f_Get_result_ue =Just e}))
+    (\e  -> 
+      return rs{f_Get_result_te =Just e}))
+  writeMessageBegin oprot ("get", M_REPLY, seqid);
+  write_Get_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
+process_get_slice (seqid, iprot, oprot, handler) = do
+  args <- read_Get_slice_args iprot
+  readMessageEnd iprot
+  rs <- return (Get_slice_result Nothing Nothing Nothing Nothing)
+  res <- (Control.Exception.catch
+    (Control.Exception.catch
+      (Control.Exception.catch
+        (do
+          res <- Iface.get_slice handler (f_Get_slice_args_keyspace args) (f_Get_slice_args_key args) (f_Get_slice_args_column_parent args) (f_Get_slice_args_predicate args) (f_Get_slice_args_consistency_level args)
+          return rs{f_Get_slice_result_success= Just res})
+        (\e  -> 
+          return rs{f_Get_slice_result_ire =Just e}))
+      (\e  -> 
+        return rs{f_Get_slice_result_ue =Just e}))
+    (\e  -> 
+      return rs{f_Get_slice_result_te =Just e}))
+  writeMessageBegin oprot ("get_slice", M_REPLY, seqid);
+  write_Get_slice_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
+process_multiget (seqid, iprot, oprot, handler) = do
+  args <- read_Multiget_args iprot
+  readMessageEnd iprot
+  rs <- return (Multiget_result Nothing Nothing Nothing Nothing)
+  res <- (Control.Exception.catch
+    (Control.Exception.catch
+      (Control.Exception.catch
+        (do
+          res <- Iface.multiget handler (f_Multiget_args_keyspace args) (f_Multiget_args_keys args) (f_Multiget_args_column_path args) (f_Multiget_args_consistency_level args)
+          return rs{f_Multiget_result_success= Just res})
+        (\e  -> 
+          return rs{f_Multiget_result_ire =Just e}))
+      (\e  -> 
+        return rs{f_Multiget_result_ue =Just e}))
+    (\e  -> 
+      return rs{f_Multiget_result_te =Just e}))
+  writeMessageBegin oprot ("multiget", M_REPLY, seqid);
+  write_Multiget_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
+process_multiget_slice (seqid, iprot, oprot, handler) = do
+  args <- read_Multiget_slice_args iprot
+  readMessageEnd iprot
+  rs <- return (Multiget_slice_result Nothing Nothing Nothing Nothing)
+  res <- (Control.Exception.catch
+    (Control.Exception.catch
+      (Control.Exception.catch
+        (do
+          res <- Iface.multiget_slice handler (f_Multiget_slice_args_keyspace args) (f_Multiget_slice_args_keys args) (f_Multiget_slice_args_column_parent args) (f_Multiget_slice_args_predicate args) (f_Multiget_slice_args_consistency_level args)
+          return rs{f_Multiget_slice_result_success= Just res})
+        (\e  -> 
+          return rs{f_Multiget_slice_result_ire =Just e}))
+      (\e  -> 
+        return rs{f_Multiget_slice_result_ue =Just e}))
+    (\e  -> 
+      return rs{f_Multiget_slice_result_te =Just e}))
+  writeMessageBegin oprot ("multiget_slice", M_REPLY, seqid);
+  write_Multiget_slice_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
+process_get_count (seqid, iprot, oprot, handler) = do
+  args <- read_Get_count_args iprot
+  readMessageEnd iprot
+  rs <- return (Get_count_result Nothing Nothing Nothing Nothing)
+  res <- (Control.Exception.catch
+    (Control.Exception.catch
+      (Control.Exception.catch
+        (do
+          res <- Iface.get_count handler (f_Get_count_args_keyspace args) (f_Get_count_args_key args) (f_Get_count_args_column_parent args) (f_Get_count_args_consistency_level args)
+          return rs{f_Get_count_result_success= Just res})
+        (\e  -> 
+          return rs{f_Get_count_result_ire =Just e}))
+      (\e  -> 
+        return rs{f_Get_count_result_ue =Just e}))
+    (\e  -> 
+      return rs{f_Get_count_result_te =Just e}))
+  writeMessageBegin oprot ("get_count", M_REPLY, seqid);
+  write_Get_count_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
+process_get_key_range (seqid, iprot, oprot, handler) = do
+  args <- read_Get_key_range_args iprot
+  readMessageEnd iprot
+  rs <- return (Get_key_range_result Nothing Nothing Nothing Nothing)
+  res <- (Control.Exception.catch
+    (Control.Exception.catch
+      (Control.Exception.catch
+        (do
+          res <- Iface.get_key_range handler (f_Get_key_range_args_keyspace args) (f_Get_key_range_args_column_family args) (f_Get_key_range_args_start args) (f_Get_key_range_args_finish args) (f_Get_key_range_args_count args) (f_Get_key_range_args_consistency_level args)
+          return rs{f_Get_key_range_result_success= Just res})
+        (\e  -> 
+          return rs{f_Get_key_range_result_ire =Just e}))
+      (\e  -> 
+        return rs{f_Get_key_range_result_ue =Just e}))
+    (\e  -> 
+      return rs{f_Get_key_range_result_te =Just e}))
+  writeMessageBegin oprot ("get_key_range", M_REPLY, seqid);
+  write_Get_key_range_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
+process_get_range_slice (seqid, iprot, oprot, handler) = do
+  args <- read_Get_range_slice_args iprot
+  readMessageEnd iprot
+  rs <- return (Get_range_slice_result Nothing Nothing Nothing Nothing)
+  res <- (Control.Exception.catch
+    (Control.Exception.catch
+      (Control.Exception.catch
+        (do
+          res <- Iface.get_range_slice handler (f_Get_range_slice_args_keyspace args) (f_Get_range_slice_args_column_parent args) (f_Get_range_slice_args_predicate args) (f_Get_range_slice_args_start_key args) (f_Get_range_slice_args_finish_key args) (f_Get_range_slice_args_row_count args) (f_Get_range_slice_args_consistency_level args)
+          return rs{f_Get_range_slice_result_success= Just res})
+        (\e  -> 
+          return rs{f_Get_range_slice_result_ire =Just e}))
+      (\e  -> 
+        return rs{f_Get_range_slice_result_ue =Just e}))
+    (\e  -> 
+      return rs{f_Get_range_slice_result_te =Just e}))
+  writeMessageBegin oprot ("get_range_slice", M_REPLY, seqid);
+  write_Get_range_slice_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
+process_insert (seqid, iprot, oprot, handler) = do
+  args <- read_Insert_args iprot
+  readMessageEnd iprot
+  rs <- return (Insert_result Nothing Nothing Nothing)
+  res <- (Control.Exception.catch
+    (Control.Exception.catch
+      (Control.Exception.catch
+        (do
+          Iface.insert handler (f_Insert_args_keyspace args) (f_Insert_args_key args) (f_Insert_args_column_path args) (f_Insert_args_value args) (f_Insert_args_timestamp args) (f_Insert_args_consistency_level args)
+          return rs)
+        (\e  -> 
+          return rs{f_Insert_result_ire =Just e}))
+      (\e  -> 
+        return rs{f_Insert_result_ue =Just e}))
+    (\e  -> 
+      return rs{f_Insert_result_te =Just e}))
+  writeMessageBegin oprot ("insert", M_REPLY, seqid);
+  write_Insert_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
+process_batch_insert (seqid, iprot, oprot, handler) = do
+  args <- read_Batch_insert_args iprot
+  readMessageEnd iprot
+  rs <- return (Batch_insert_result Nothing Nothing Nothing)
+  res <- (Control.Exception.catch
+    (Control.Exception.catch
+      (Control.Exception.catch
+        (do
+          Iface.batch_insert handler (f_Batch_insert_args_keyspace args) (f_Batch_insert_args_key args) (f_Batch_insert_args_cfmap args) (f_Batch_insert_args_consistency_level args)
+          return rs)
+        (\e  -> 
+          return rs{f_Batch_insert_result_ire =Just e}))
+      (\e  -> 
+        return rs{f_Batch_insert_result_ue =Just e}))
+    (\e  -> 
+      return rs{f_Batch_insert_result_te =Just e}))
+  writeMessageBegin oprot ("batch_insert", M_REPLY, seqid);
+  write_Batch_insert_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
+process_remove (seqid, iprot, oprot, handler) = do
+  args <- read_Remove_args iprot
+  readMessageEnd iprot
+  rs <- return (Remove_result Nothing Nothing Nothing)
+  res <- (Control.Exception.catch
+    (Control.Exception.catch
+      (Control.Exception.catch
+        (do
+          Iface.remove handler (f_Remove_args_keyspace args) (f_Remove_args_key args) (f_Remove_args_column_path args) (f_Remove_args_timestamp args) (f_Remove_args_consistency_level args)
+          return rs)
+        (\e  -> 
+          return rs{f_Remove_result_ire =Just e}))
+      (\e  -> 
+        return rs{f_Remove_result_ue =Just e}))
+    (\e  -> 
+      return rs{f_Remove_result_te =Just e}))
+  writeMessageBegin oprot ("remove", M_REPLY, seqid);
+  write_Remove_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
+process_get_string_property (seqid, iprot, oprot, handler) = do
+  args <- read_Get_string_property_args iprot
+  readMessageEnd iprot
+  rs <- return (Get_string_property_result Nothing)
+  res <- (do
+    res <- Iface.get_string_property handler (f_Get_string_property_args_property args)
+    return rs{f_Get_string_property_result_success= Just res})
+  writeMessageBegin oprot ("get_string_property", M_REPLY, seqid);
+  write_Get_string_property_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
+process_get_string_list_property (seqid, iprot, oprot, handler) = do
+  args <- read_Get_string_list_property_args iprot
+  readMessageEnd iprot
+  rs <- return (Get_string_list_property_result Nothing)
+  res <- (do
+    res <- Iface.get_string_list_property handler (f_Get_string_list_property_args_property args)
+    return rs{f_Get_string_list_property_result_success= Just res})
+  writeMessageBegin oprot ("get_string_list_property", M_REPLY, seqid);
+  write_Get_string_list_property_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
+process_describe_keyspace (seqid, iprot, oprot, handler) = do
+  args <- read_Describe_keyspace_args iprot
+  readMessageEnd iprot
+  rs <- return (Describe_keyspace_result Nothing Nothing)
+  res <- (Control.Exception.catch
+    (do
+      res <- Iface.describe_keyspace handler (f_Describe_keyspace_args_keyspace args)
+      return rs{f_Describe_keyspace_result_success= Just res})
+    (\e  -> 
+      return rs{f_Describe_keyspace_result_nfe =Just e}))
+  writeMessageBegin oprot ("describe_keyspace", M_REPLY, seqid);
+  write_Describe_keyspace_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
+proc handler (iprot,oprot) (name,typ,seqid) = case name of
+  "get" -> process_get (seqid,iprot,oprot,handler)
+  "get_slice" -> process_get_slice (seqid,iprot,oprot,handler)
+  "multiget" -> process_multiget (seqid,iprot,oprot,handler)
+  "multiget_slice" -> process_multiget_slice (seqid,iprot,oprot,handler)
+  "get_count" -> process_get_count (seqid,iprot,oprot,handler)
+  "get_key_range" -> process_get_key_range (seqid,iprot,oprot,handler)
+  "get_range_slice" -> process_get_range_slice (seqid,iprot,oprot,handler)
+  "insert" -> process_insert (seqid,iprot,oprot,handler)
+  "batch_insert" -> process_batch_insert (seqid,iprot,oprot,handler)
+  "remove" -> process_remove (seqid,iprot,oprot,handler)
+  "get_string_property" -> process_get_string_property (seqid,iprot,oprot,handler)
+  "get_string_list_property" -> process_get_string_list_property (seqid,iprot,oprot,handler)
+  "describe_keyspace" -> process_describe_keyspace (seqid,iprot,oprot,handler)
+  _ -> do
+    skip iprot T_STRUCT
+    readMessageEnd iprot
+    writeMessageBegin oprot (name,M_EXCEPTION,seqid)
+    writeAppExn oprot (AppExn AE_UNKNOWN_METHOD ("Unknown function " ++ name))
+    writeMessageEnd oprot
+    tFlush (getTransport oprot)
+process handler (iprot, oprot) = do
+  (name, typ, seqid) <- readMessageBegin iprot
+  proc handler (iprot,oprot) (name,typ,seqid)
+  return True
diff --git a/Database/Cassandra/Thrift/Cassandra_Client.hs b/Database/Cassandra/Thrift/Cassandra_Client.hs
new file mode 100644
--- /dev/null
+++ b/Database/Cassandra/Thrift/Cassandra_Client.hs
@@ -0,0 +1,399 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+
+module Database.Cassandra.Thrift.Cassandra_Client(get,get_slice,multiget,multiget_slice,get_count,get_key_range,get_range_slice,insert,batch_insert,remove,get_string_property,get_string_list_property,describe_keyspace) where
+import Data.IORef
+import Thrift
+import Data.Typeable ( Typeable )
+import Control.Exception
+import qualified Data.Map as Map
+import qualified Data.Set as Set
+import Data.Int
+import Database.Cassandra.Thrift.Cassandra_Types
+import Database.Cassandra.Thrift.Cassandra
+seqid = newIORef 0
+get (ip,op) arg_keyspace arg_key arg_column_path arg_consistency_level = do
+  send_get op arg_keyspace arg_key arg_column_path arg_consistency_level
+  recv_get ip
+send_get op arg_keyspace arg_key arg_column_path arg_consistency_level = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("get", M_CALL, seqn)
+  write_Get_args op (Get_args{f_Get_args_keyspace=Just arg_keyspace,f_Get_args_key=Just arg_key,f_Get_args_column_path=Just arg_column_path,f_Get_args_consistency_level=Just arg_consistency_level})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_get ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Get_result ip
+  readMessageEnd ip
+  case f_Get_result_success res of
+    Just v -> return v
+    Nothing -> do
+      case f_Get_result_ire res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Get_result_nfe res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Get_result_ue res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Get_result_te res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      throw (AppExn AE_MISSING_RESULT "get failed: unknown result")
+get_slice (ip,op) arg_keyspace arg_key arg_column_parent arg_predicate arg_consistency_level = do
+  send_get_slice op arg_keyspace arg_key arg_column_parent arg_predicate arg_consistency_level
+  recv_get_slice ip
+send_get_slice op arg_keyspace arg_key arg_column_parent arg_predicate arg_consistency_level = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("get_slice", M_CALL, seqn)
+  write_Get_slice_args op (Get_slice_args{f_Get_slice_args_keyspace=Just arg_keyspace,f_Get_slice_args_key=Just arg_key,f_Get_slice_args_column_parent=Just arg_column_parent,f_Get_slice_args_predicate=Just arg_predicate,f_Get_slice_args_consistency_level=Just arg_consistency_level})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_get_slice ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Get_slice_result ip
+  readMessageEnd ip
+  case f_Get_slice_result_success res of
+    Just v -> return v
+    Nothing -> do
+      case f_Get_slice_result_ire res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Get_slice_result_ue res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Get_slice_result_te res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      throw (AppExn AE_MISSING_RESULT "get_slice failed: unknown result")
+multiget (ip,op) arg_keyspace arg_keys arg_column_path arg_consistency_level = do
+  send_multiget op arg_keyspace arg_keys arg_column_path arg_consistency_level
+  recv_multiget ip
+send_multiget op arg_keyspace arg_keys arg_column_path arg_consistency_level = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("multiget", M_CALL, seqn)
+  write_Multiget_args op (Multiget_args{f_Multiget_args_keyspace=Just arg_keyspace,f_Multiget_args_keys=Just arg_keys,f_Multiget_args_column_path=Just arg_column_path,f_Multiget_args_consistency_level=Just arg_consistency_level})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_multiget ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Multiget_result ip
+  readMessageEnd ip
+  case f_Multiget_result_success res of
+    Just v -> return v
+    Nothing -> do
+      case f_Multiget_result_ire res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Multiget_result_ue res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Multiget_result_te res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      throw (AppExn AE_MISSING_RESULT "multiget failed: unknown result")
+multiget_slice (ip,op) arg_keyspace arg_keys arg_column_parent arg_predicate arg_consistency_level = do
+  send_multiget_slice op arg_keyspace arg_keys arg_column_parent arg_predicate arg_consistency_level
+  recv_multiget_slice ip
+send_multiget_slice op arg_keyspace arg_keys arg_column_parent arg_predicate arg_consistency_level = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("multiget_slice", M_CALL, seqn)
+  write_Multiget_slice_args op (Multiget_slice_args{f_Multiget_slice_args_keyspace=Just arg_keyspace,f_Multiget_slice_args_keys=Just arg_keys,f_Multiget_slice_args_column_parent=Just arg_column_parent,f_Multiget_slice_args_predicate=Just arg_predicate,f_Multiget_slice_args_consistency_level=Just arg_consistency_level})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_multiget_slice ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Multiget_slice_result ip
+  readMessageEnd ip
+  case f_Multiget_slice_result_success res of
+    Just v -> return v
+    Nothing -> do
+      case f_Multiget_slice_result_ire res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Multiget_slice_result_ue res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Multiget_slice_result_te res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      throw (AppExn AE_MISSING_RESULT "multiget_slice failed: unknown result")
+get_count (ip,op) arg_keyspace arg_key arg_column_parent arg_consistency_level = do
+  send_get_count op arg_keyspace arg_key arg_column_parent arg_consistency_level
+  recv_get_count ip
+send_get_count op arg_keyspace arg_key arg_column_parent arg_consistency_level = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("get_count", M_CALL, seqn)
+  write_Get_count_args op (Get_count_args{f_Get_count_args_keyspace=Just arg_keyspace,f_Get_count_args_key=Just arg_key,f_Get_count_args_column_parent=Just arg_column_parent,f_Get_count_args_consistency_level=Just arg_consistency_level})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_get_count ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Get_count_result ip
+  readMessageEnd ip
+  case f_Get_count_result_success res of
+    Just v -> return v
+    Nothing -> do
+      case f_Get_count_result_ire res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Get_count_result_ue res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Get_count_result_te res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      throw (AppExn AE_MISSING_RESULT "get_count failed: unknown result")
+get_key_range (ip,op) arg_keyspace arg_column_family arg_start arg_finish arg_count arg_consistency_level = do
+  send_get_key_range op arg_keyspace arg_column_family arg_start arg_finish arg_count arg_consistency_level
+  recv_get_key_range ip
+send_get_key_range op arg_keyspace arg_column_family arg_start arg_finish arg_count arg_consistency_level = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("get_key_range", M_CALL, seqn)
+  write_Get_key_range_args op (Get_key_range_args{f_Get_key_range_args_keyspace=Just arg_keyspace,f_Get_key_range_args_column_family=Just arg_column_family,f_Get_key_range_args_start=Just arg_start,f_Get_key_range_args_finish=Just arg_finish,f_Get_key_range_args_count=Just arg_count,f_Get_key_range_args_consistency_level=Just arg_consistency_level})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_get_key_range ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Get_key_range_result ip
+  readMessageEnd ip
+  case f_Get_key_range_result_success res of
+    Just v -> return v
+    Nothing -> do
+      case f_Get_key_range_result_ire res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Get_key_range_result_ue res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Get_key_range_result_te res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      throw (AppExn AE_MISSING_RESULT "get_key_range failed: unknown result")
+get_range_slice (ip,op) arg_keyspace arg_column_parent arg_predicate arg_start_key arg_finish_key arg_row_count arg_consistency_level = do
+  send_get_range_slice op arg_keyspace arg_column_parent arg_predicate arg_start_key arg_finish_key arg_row_count arg_consistency_level
+  recv_get_range_slice ip
+send_get_range_slice op arg_keyspace arg_column_parent arg_predicate arg_start_key arg_finish_key arg_row_count arg_consistency_level = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("get_range_slice", M_CALL, seqn)
+  write_Get_range_slice_args op (Get_range_slice_args{f_Get_range_slice_args_keyspace=Just arg_keyspace,f_Get_range_slice_args_column_parent=Just arg_column_parent,f_Get_range_slice_args_predicate=Just arg_predicate,f_Get_range_slice_args_start_key=Just arg_start_key,f_Get_range_slice_args_finish_key=Just arg_finish_key,f_Get_range_slice_args_row_count=Just arg_row_count,f_Get_range_slice_args_consistency_level=Just arg_consistency_level})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_get_range_slice ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Get_range_slice_result ip
+  readMessageEnd ip
+  case f_Get_range_slice_result_success res of
+    Just v -> return v
+    Nothing -> do
+      case f_Get_range_slice_result_ire res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Get_range_slice_result_ue res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      case f_Get_range_slice_result_te res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      throw (AppExn AE_MISSING_RESULT "get_range_slice failed: unknown result")
+insert (ip,op) arg_keyspace arg_key arg_column_path arg_value arg_timestamp arg_consistency_level = do
+  send_insert op arg_keyspace arg_key arg_column_path arg_value arg_timestamp arg_consistency_level
+  recv_insert ip
+send_insert op arg_keyspace arg_key arg_column_path arg_value arg_timestamp arg_consistency_level = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("insert", M_CALL, seqn)
+  write_Insert_args op (Insert_args{f_Insert_args_keyspace=Just arg_keyspace,f_Insert_args_key=Just arg_key,f_Insert_args_column_path=Just arg_column_path,f_Insert_args_value=Just arg_value,f_Insert_args_timestamp=Just arg_timestamp,f_Insert_args_consistency_level=Just arg_consistency_level})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_insert ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Insert_result ip
+  readMessageEnd ip
+  case f_Insert_result_ire res of
+    Nothing -> return ()
+    Just _v -> throw _v
+  case f_Insert_result_ue res of
+    Nothing -> return ()
+    Just _v -> throw _v
+  case f_Insert_result_te res of
+    Nothing -> return ()
+    Just _v -> throw _v
+  return ()
+batch_insert (ip,op) arg_keyspace arg_key arg_cfmap arg_consistency_level = do
+  send_batch_insert op arg_keyspace arg_key arg_cfmap arg_consistency_level
+  recv_batch_insert ip
+send_batch_insert op arg_keyspace arg_key arg_cfmap arg_consistency_level = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("batch_insert", M_CALL, seqn)
+  write_Batch_insert_args op (Batch_insert_args{f_Batch_insert_args_keyspace=Just arg_keyspace,f_Batch_insert_args_key=Just arg_key,f_Batch_insert_args_cfmap=Just arg_cfmap,f_Batch_insert_args_consistency_level=Just arg_consistency_level})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_batch_insert ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Batch_insert_result ip
+  readMessageEnd ip
+  case f_Batch_insert_result_ire res of
+    Nothing -> return ()
+    Just _v -> throw _v
+  case f_Batch_insert_result_ue res of
+    Nothing -> return ()
+    Just _v -> throw _v
+  case f_Batch_insert_result_te res of
+    Nothing -> return ()
+    Just _v -> throw _v
+  return ()
+remove (ip,op) arg_keyspace arg_key arg_column_path arg_timestamp arg_consistency_level = do
+  send_remove op arg_keyspace arg_key arg_column_path arg_timestamp arg_consistency_level
+  recv_remove ip
+send_remove op arg_keyspace arg_key arg_column_path arg_timestamp arg_consistency_level = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("remove", M_CALL, seqn)
+  write_Remove_args op (Remove_args{f_Remove_args_keyspace=Just arg_keyspace,f_Remove_args_key=Just arg_key,f_Remove_args_column_path=Just arg_column_path,f_Remove_args_timestamp=Just arg_timestamp,f_Remove_args_consistency_level=Just arg_consistency_level})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_remove ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Remove_result ip
+  readMessageEnd ip
+  case f_Remove_result_ire res of
+    Nothing -> return ()
+    Just _v -> throw _v
+  case f_Remove_result_ue res of
+    Nothing -> return ()
+    Just _v -> throw _v
+  case f_Remove_result_te res of
+    Nothing -> return ()
+    Just _v -> throw _v
+  return ()
+get_string_property (ip,op) arg_property = do
+  send_get_string_property op arg_property
+  recv_get_string_property ip
+send_get_string_property op arg_property = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("get_string_property", M_CALL, seqn)
+  write_Get_string_property_args op (Get_string_property_args{f_Get_string_property_args_property=Just arg_property})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_get_string_property ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Get_string_property_result ip
+  readMessageEnd ip
+  case f_Get_string_property_result_success res of
+    Just v -> return v
+    Nothing -> do
+      throw (AppExn AE_MISSING_RESULT "get_string_property failed: unknown result")
+get_string_list_property (ip,op) arg_property = do
+  send_get_string_list_property op arg_property
+  recv_get_string_list_property ip
+send_get_string_list_property op arg_property = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("get_string_list_property", M_CALL, seqn)
+  write_Get_string_list_property_args op (Get_string_list_property_args{f_Get_string_list_property_args_property=Just arg_property})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_get_string_list_property ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Get_string_list_property_result ip
+  readMessageEnd ip
+  case f_Get_string_list_property_result_success res of
+    Just v -> return v
+    Nothing -> do
+      throw (AppExn AE_MISSING_RESULT "get_string_list_property failed: unknown result")
+describe_keyspace (ip,op) arg_keyspace = do
+  send_describe_keyspace op arg_keyspace
+  recv_describe_keyspace ip
+send_describe_keyspace op arg_keyspace = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("describe_keyspace", M_CALL, seqn)
+  write_Describe_keyspace_args op (Describe_keyspace_args{f_Describe_keyspace_args_keyspace=Just arg_keyspace})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_describe_keyspace ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Describe_keyspace_result ip
+  readMessageEnd ip
+  case f_Describe_keyspace_result_success res of
+    Just v -> return v
+    Nothing -> do
+      case f_Describe_keyspace_result_nfe res of
+        Nothing -> return ()
+        Just _v -> throw _v
+      throw (AppExn AE_MISSING_RESULT "describe_keyspace failed: unknown result")
diff --git a/Database/Cassandra/Thrift/Cassandra_Consts.hs b/Database/Cassandra/Thrift/Cassandra_Consts.hs
new file mode 100644
--- /dev/null
+++ b/Database/Cassandra/Thrift/Cassandra_Consts.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+
+-----------------------------------------------------------------
+-- Autogenerated by Thrift                                     --
+--                                                             --
+-- DO NOT EDIT UNLESS YOU ARE SURE YOU KNOW WHAT YOU ARE DOING --
+-----------------------------------------------------------------
+
+module Database.Cassandra.Thrift.Cassandra_Consts where
+import Thrift
+import Data.Typeable ( Typeable )
+import Control.Exception
+import qualified Data.Map as Map
+import qualified Data.Set as Set
+import Data.Int
+import Database.Cassandra.Thrift.Cassandra_Types
+vERSION :: String
+vERSION = "0.5.1"
+
diff --git a/Database/Cassandra/Thrift/Cassandra_Iface.hs b/Database/Cassandra/Thrift/Cassandra_Iface.hs
new file mode 100644
--- /dev/null
+++ b/Database/Cassandra/Thrift/Cassandra_Iface.hs
@@ -0,0 +1,23 @@
+module Database.Cassandra.Thrift.Cassandra_Iface where
+import Thrift
+import Data.Typeable ( Typeable )
+import Control.Exception
+import qualified Data.Map as Map
+import qualified Data.Set as Set
+import Data.Int
+import Database.Cassandra.Thrift.Cassandra_Types
+
+class Cassandra_Iface a where
+  get :: a -> Maybe String -> Maybe String -> Maybe ColumnPath -> Maybe ConsistencyLevel -> IO ColumnOrSuperColumn
+  get_slice :: a -> Maybe String -> Maybe String -> Maybe ColumnParent -> Maybe SlicePredicate -> Maybe ConsistencyLevel -> IO [ColumnOrSuperColumn]
+  multiget :: a -> Maybe String -> Maybe [String] -> Maybe ColumnPath -> Maybe ConsistencyLevel -> IO (Map.Map String ColumnOrSuperColumn)
+  multiget_slice :: a -> Maybe String -> Maybe [String] -> Maybe ColumnParent -> Maybe SlicePredicate -> Maybe ConsistencyLevel -> IO (Map.Map String [ColumnOrSuperColumn])
+  get_count :: a -> Maybe String -> Maybe String -> Maybe ColumnParent -> Maybe ConsistencyLevel -> IO Int
+  get_key_range :: a -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> Maybe Int -> Maybe ConsistencyLevel -> IO [String]
+  get_range_slice :: a -> Maybe String -> Maybe ColumnParent -> Maybe SlicePredicate -> Maybe String -> Maybe String -> Maybe Int -> Maybe ConsistencyLevel -> IO [KeySlice]
+  insert :: a -> Maybe String -> Maybe String -> Maybe ColumnPath -> Maybe String -> Maybe Int64 -> Maybe ConsistencyLevel -> IO ()
+  batch_insert :: a -> Maybe String -> Maybe String -> Maybe (Map.Map String [ColumnOrSuperColumn]) -> Maybe ConsistencyLevel -> IO ()
+  remove :: a -> Maybe String -> Maybe String -> Maybe ColumnPath -> Maybe Int64 -> Maybe ConsistencyLevel -> IO ()
+  get_string_property :: a -> Maybe String -> IO String
+  get_string_list_property :: a -> Maybe String -> IO [String]
+  describe_keyspace :: a -> Maybe String -> IO (Map.Map String (Map.Map String String))
diff --git a/Database/Cassandra/Thrift/Cassandra_Types.hs b/Database/Cassandra/Thrift/Cassandra_Types.hs
new file mode 100644
--- /dev/null
+++ b/Database/Cassandra/Thrift/Cassandra_Types.hs
@@ -0,0 +1,461 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+-----------------------------------------------------------------
+-- Autogenerated by Thrift                                     --
+--                                                             --
+-- DO NOT EDIT UNLESS YOU ARE SURE YOU KNOW WHAT YOU ARE DOING --
+-----------------------------------------------------------------
+
+module Database.Cassandra.Thrift.Cassandra_Types where
+import Thrift
+import Data.Typeable ( Typeable )
+import Control.Exception
+import qualified Data.Map as Map
+import qualified Data.Set as Set
+import Data.Int
+data ConsistencyLevel = ZERO|ONE|QUORUM|DCQUORUM|DCQUORUMSYNC|ALL  deriving (Show,Eq, Typeable, Ord)
+instance Enum ConsistencyLevel where
+  fromEnum t = case t of
+    ZERO -> 0
+    ONE -> 1
+    QUORUM -> 2
+    DCQUORUM -> 3
+    DCQUORUMSYNC -> 4
+    ALL -> 5
+  toEnum t = case t of
+    0 -> ZERO
+    1 -> ONE
+    2 -> QUORUM
+    3 -> DCQUORUM
+    4 -> DCQUORUMSYNC
+    5 -> ALL
+    _ -> throw ThriftException
+data Column = Column{f_Column_name :: Maybe String,f_Column_value :: Maybe String,f_Column_timestamp :: Maybe Int64} deriving (Show,Eq,Ord,Typeable)
+write_Column oprot rec = do
+  writeStructBegin oprot "Column"
+  case f_Column_name rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("name",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Column_value rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("value",T_STRING,2)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_Column_timestamp rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("timestamp",T_I64,3)
+    writeI64 oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Column_fields iprot rec = do
+  (_,_t3,_id4) <- readFieldBegin iprot
+  if _t3 == T_STOP then return rec else
+    case _id4 of 
+      1 -> if _t3 == T_STRING then do
+        s <- readString iprot
+        read_Column_fields iprot rec{f_Column_name=Just s}
+        else do
+          skip iprot _t3
+          read_Column_fields iprot rec
+      2 -> if _t3 == T_STRING then do
+        s <- readString iprot
+        read_Column_fields iprot rec{f_Column_value=Just s}
+        else do
+          skip iprot _t3
+          read_Column_fields iprot rec
+      3 -> if _t3 == T_I64 then do
+        s <- readI64 iprot
+        read_Column_fields iprot rec{f_Column_timestamp=Just s}
+        else do
+          skip iprot _t3
+          read_Column_fields iprot rec
+      _ -> do
+        skip iprot _t3
+        readFieldEnd iprot
+        read_Column_fields iprot rec
+read_Column iprot = do
+  readStructBegin iprot
+  rec <- read_Column_fields iprot (Column{f_Column_name=Nothing,f_Column_value=Nothing,f_Column_timestamp=Nothing})
+  readStructEnd iprot
+  return rec
+data SuperColumn = SuperColumn{f_SuperColumn_name :: Maybe String,f_SuperColumn_columns :: Maybe [Column]} deriving (Show,Eq,Ord,Typeable)
+write_SuperColumn oprot rec = do
+  writeStructBegin oprot "SuperColumn"
+  case f_SuperColumn_name rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("name",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_SuperColumn_columns rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("columns",T_LIST,2)
+    (let {f [] = return (); f (_viter7:t) = do {write_Column oprot _viter7;f t}} in do {writeListBegin oprot (T_STRUCT,length _v); f _v;writeListEnd oprot})
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_SuperColumn_fields iprot rec = do
+  (_,_t9,_id10) <- readFieldBegin iprot
+  if _t9 == T_STOP then return rec else
+    case _id10 of 
+      1 -> if _t9 == T_STRING then do
+        s <- readString iprot
+        read_SuperColumn_fields iprot rec{f_SuperColumn_name=Just s}
+        else do
+          skip iprot _t9
+          read_SuperColumn_fields iprot rec
+      2 -> if _t9 == T_LIST then do
+        s <- (let {f 0 = return []; f n = do {v <- (read_Column iprot);r <- f (n-1); return $ v:r}} in do {(_etype14,_size11) <- readListBegin iprot; f _size11})
+        read_SuperColumn_fields iprot rec{f_SuperColumn_columns=Just s}
+        else do
+          skip iprot _t9
+          read_SuperColumn_fields iprot rec
+      _ -> do
+        skip iprot _t9
+        readFieldEnd iprot
+        read_SuperColumn_fields iprot rec
+read_SuperColumn iprot = do
+  readStructBegin iprot
+  rec <- read_SuperColumn_fields iprot (SuperColumn{f_SuperColumn_name=Nothing,f_SuperColumn_columns=Nothing})
+  readStructEnd iprot
+  return rec
+data ColumnOrSuperColumn = ColumnOrSuperColumn{f_ColumnOrSuperColumn_column :: Maybe Column,f_ColumnOrSuperColumn_super_column :: Maybe SuperColumn} deriving (Show,Eq,Ord,Typeable)
+write_ColumnOrSuperColumn oprot rec = do
+  writeStructBegin oprot "ColumnOrSuperColumn"
+  case f_ColumnOrSuperColumn_column rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column",T_STRUCT,1)
+    write_Column oprot _v
+    writeFieldEnd oprot}
+  case f_ColumnOrSuperColumn_super_column rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("super_column",T_STRUCT,2)
+    write_SuperColumn oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_ColumnOrSuperColumn_fields iprot rec = do
+  (_,_t19,_id20) <- readFieldBegin iprot
+  if _t19 == T_STOP then return rec else
+    case _id20 of 
+      1 -> if _t19 == T_STRUCT then do
+        s <- (read_Column iprot)
+        read_ColumnOrSuperColumn_fields iprot rec{f_ColumnOrSuperColumn_column=Just s}
+        else do
+          skip iprot _t19
+          read_ColumnOrSuperColumn_fields iprot rec
+      2 -> if _t19 == T_STRUCT then do
+        s <- (read_SuperColumn iprot)
+        read_ColumnOrSuperColumn_fields iprot rec{f_ColumnOrSuperColumn_super_column=Just s}
+        else do
+          skip iprot _t19
+          read_ColumnOrSuperColumn_fields iprot rec
+      _ -> do
+        skip iprot _t19
+        readFieldEnd iprot
+        read_ColumnOrSuperColumn_fields iprot rec
+read_ColumnOrSuperColumn iprot = do
+  readStructBegin iprot
+  rec <- read_ColumnOrSuperColumn_fields iprot (ColumnOrSuperColumn{f_ColumnOrSuperColumn_column=Nothing,f_ColumnOrSuperColumn_super_column=Nothing})
+  readStructEnd iprot
+  return rec
+data NotFoundException = NotFoundException deriving (Show,Eq,Ord,Typeable)
+instance Exception NotFoundException
+write_NotFoundException oprot rec = do
+  writeStructBegin oprot "NotFoundException"
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_NotFoundException_fields iprot rec = do
+  (_,_t24,_id25) <- readFieldBegin iprot
+  if _t24 == T_STOP then return rec else
+    case _id25 of 
+      _ -> do
+        skip iprot _t24
+        readFieldEnd iprot
+        read_NotFoundException_fields iprot rec
+read_NotFoundException iprot = do
+  readStructBegin iprot
+  rec <- read_NotFoundException_fields iprot (NotFoundException{})
+  readStructEnd iprot
+  return rec
+data InvalidRequestException = InvalidRequestException{f_InvalidRequestException_why :: Maybe String} deriving (Show,Eq,Ord,Typeable)
+instance Exception InvalidRequestException
+write_InvalidRequestException oprot rec = do
+  writeStructBegin oprot "InvalidRequestException"
+  case f_InvalidRequestException_why rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("why",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_InvalidRequestException_fields iprot rec = do
+  (_,_t29,_id30) <- readFieldBegin iprot
+  if _t29 == T_STOP then return rec else
+    case _id30 of 
+      1 -> if _t29 == T_STRING then do
+        s <- readString iprot
+        read_InvalidRequestException_fields iprot rec{f_InvalidRequestException_why=Just s}
+        else do
+          skip iprot _t29
+          read_InvalidRequestException_fields iprot rec
+      _ -> do
+        skip iprot _t29
+        readFieldEnd iprot
+        read_InvalidRequestException_fields iprot rec
+read_InvalidRequestException iprot = do
+  readStructBegin iprot
+  rec <- read_InvalidRequestException_fields iprot (InvalidRequestException{f_InvalidRequestException_why=Nothing})
+  readStructEnd iprot
+  return rec
+data UnavailableException = UnavailableException deriving (Show,Eq,Ord,Typeable)
+instance Exception UnavailableException
+write_UnavailableException oprot rec = do
+  writeStructBegin oprot "UnavailableException"
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_UnavailableException_fields iprot rec = do
+  (_,_t34,_id35) <- readFieldBegin iprot
+  if _t34 == T_STOP then return rec else
+    case _id35 of 
+      _ -> do
+        skip iprot _t34
+        readFieldEnd iprot
+        read_UnavailableException_fields iprot rec
+read_UnavailableException iprot = do
+  readStructBegin iprot
+  rec <- read_UnavailableException_fields iprot (UnavailableException{})
+  readStructEnd iprot
+  return rec
+data TimedOutException = TimedOutException deriving (Show,Eq,Ord,Typeable)
+instance Exception TimedOutException
+write_TimedOutException oprot rec = do
+  writeStructBegin oprot "TimedOutException"
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_TimedOutException_fields iprot rec = do
+  (_,_t39,_id40) <- readFieldBegin iprot
+  if _t39 == T_STOP then return rec else
+    case _id40 of 
+      _ -> do
+        skip iprot _t39
+        readFieldEnd iprot
+        read_TimedOutException_fields iprot rec
+read_TimedOutException iprot = do
+  readStructBegin iprot
+  rec <- read_TimedOutException_fields iprot (TimedOutException{})
+  readStructEnd iprot
+  return rec
+data ColumnParent = ColumnParent{f_ColumnParent_column_family :: Maybe String,f_ColumnParent_super_column :: Maybe String} deriving (Show,Eq,Ord,Typeable)
+write_ColumnParent oprot rec = do
+  writeStructBegin oprot "ColumnParent"
+  case f_ColumnParent_column_family rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column_family",T_STRING,3)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_ColumnParent_super_column rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("super_column",T_STRING,4)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_ColumnParent_fields iprot rec = do
+  (_,_t44,_id45) <- readFieldBegin iprot
+  if _t44 == T_STOP then return rec else
+    case _id45 of 
+      3 -> if _t44 == T_STRING then do
+        s <- readString iprot
+        read_ColumnParent_fields iprot rec{f_ColumnParent_column_family=Just s}
+        else do
+          skip iprot _t44
+          read_ColumnParent_fields iprot rec
+      4 -> if _t44 == T_STRING then do
+        s <- readString iprot
+        read_ColumnParent_fields iprot rec{f_ColumnParent_super_column=Just s}
+        else do
+          skip iprot _t44
+          read_ColumnParent_fields iprot rec
+      _ -> do
+        skip iprot _t44
+        readFieldEnd iprot
+        read_ColumnParent_fields iprot rec
+read_ColumnParent iprot = do
+  readStructBegin iprot
+  rec <- read_ColumnParent_fields iprot (ColumnParent{f_ColumnParent_column_family=Nothing,f_ColumnParent_super_column=Nothing})
+  readStructEnd iprot
+  return rec
+data ColumnPath = ColumnPath{f_ColumnPath_column_family :: Maybe String,f_ColumnPath_super_column :: Maybe String,f_ColumnPath_column :: Maybe String} deriving (Show,Eq,Ord,Typeable)
+write_ColumnPath oprot rec = do
+  writeStructBegin oprot "ColumnPath"
+  case f_ColumnPath_column_family rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column_family",T_STRING,3)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_ColumnPath_super_column rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("super_column",T_STRING,4)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_ColumnPath_column rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column",T_STRING,5)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_ColumnPath_fields iprot rec = do
+  (_,_t49,_id50) <- readFieldBegin iprot
+  if _t49 == T_STOP then return rec else
+    case _id50 of 
+      3 -> if _t49 == T_STRING then do
+        s <- readString iprot
+        read_ColumnPath_fields iprot rec{f_ColumnPath_column_family=Just s}
+        else do
+          skip iprot _t49
+          read_ColumnPath_fields iprot rec
+      4 -> if _t49 == T_STRING then do
+        s <- readString iprot
+        read_ColumnPath_fields iprot rec{f_ColumnPath_super_column=Just s}
+        else do
+          skip iprot _t49
+          read_ColumnPath_fields iprot rec
+      5 -> if _t49 == T_STRING then do
+        s <- readString iprot
+        read_ColumnPath_fields iprot rec{f_ColumnPath_column=Just s}
+        else do
+          skip iprot _t49
+          read_ColumnPath_fields iprot rec
+      _ -> do
+        skip iprot _t49
+        readFieldEnd iprot
+        read_ColumnPath_fields iprot rec
+read_ColumnPath iprot = do
+  readStructBegin iprot
+  rec <- read_ColumnPath_fields iprot (ColumnPath{f_ColumnPath_column_family=Nothing,f_ColumnPath_super_column=Nothing,f_ColumnPath_column=Nothing})
+  readStructEnd iprot
+  return rec
+data SliceRange = SliceRange{f_SliceRange_start :: Maybe String,f_SliceRange_finish :: Maybe String,f_SliceRange_reversed :: Maybe Bool,f_SliceRange_count :: Maybe Int} deriving (Show,Eq,Ord,Typeable)
+write_SliceRange oprot rec = do
+  writeStructBegin oprot "SliceRange"
+  case f_SliceRange_start rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("start",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_SliceRange_finish rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("finish",T_STRING,2)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_SliceRange_reversed rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("reversed",T_BOOL,3)
+    writeBool oprot _v
+    writeFieldEnd oprot}
+  case f_SliceRange_count rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("count",T_I32,4)
+    writeI32 oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_SliceRange_fields iprot rec = do
+  (_,_t54,_id55) <- readFieldBegin iprot
+  if _t54 == T_STOP then return rec else
+    case _id55 of 
+      1 -> if _t54 == T_STRING then do
+        s <- readString iprot
+        read_SliceRange_fields iprot rec{f_SliceRange_start=Just s}
+        else do
+          skip iprot _t54
+          read_SliceRange_fields iprot rec
+      2 -> if _t54 == T_STRING then do
+        s <- readString iprot
+        read_SliceRange_fields iprot rec{f_SliceRange_finish=Just s}
+        else do
+          skip iprot _t54
+          read_SliceRange_fields iprot rec
+      3 -> if _t54 == T_BOOL then do
+        s <- readBool iprot
+        read_SliceRange_fields iprot rec{f_SliceRange_reversed=Just s}
+        else do
+          skip iprot _t54
+          read_SliceRange_fields iprot rec
+      4 -> if _t54 == T_I32 then do
+        s <- readI32 iprot
+        read_SliceRange_fields iprot rec{f_SliceRange_count=Just s}
+        else do
+          skip iprot _t54
+          read_SliceRange_fields iprot rec
+      _ -> do
+        skip iprot _t54
+        readFieldEnd iprot
+        read_SliceRange_fields iprot rec
+read_SliceRange iprot = do
+  readStructBegin iprot
+  rec <- read_SliceRange_fields iprot (SliceRange{f_SliceRange_start=Nothing,f_SliceRange_finish=Nothing,f_SliceRange_reversed=Nothing,f_SliceRange_count=Nothing})
+  readStructEnd iprot
+  return rec
+data SlicePredicate = SlicePredicate{f_SlicePredicate_column_names :: Maybe [String],f_SlicePredicate_slice_range :: Maybe SliceRange} deriving (Show,Eq,Ord,Typeable)
+write_SlicePredicate oprot rec = do
+  writeStructBegin oprot "SlicePredicate"
+  case f_SlicePredicate_column_names rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("column_names",T_LIST,1)
+    (let {f [] = return (); f (_viter58:t) = do {writeString oprot _viter58;f t}} in do {writeListBegin oprot (T_STRING,length _v); f _v;writeListEnd oprot})
+    writeFieldEnd oprot}
+  case f_SlicePredicate_slice_range rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("slice_range",T_STRUCT,2)
+    write_SliceRange oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_SlicePredicate_fields iprot rec = do
+  (_,_t60,_id61) <- readFieldBegin iprot
+  if _t60 == T_STOP then return rec else
+    case _id61 of 
+      1 -> if _t60 == T_LIST then do
+        s <- (let {f 0 = return []; f n = do {v <- readString iprot;r <- f (n-1); return $ v:r}} in do {(_etype65,_size62) <- readListBegin iprot; f _size62})
+        read_SlicePredicate_fields iprot rec{f_SlicePredicate_column_names=Just s}
+        else do
+          skip iprot _t60
+          read_SlicePredicate_fields iprot rec
+      2 -> if _t60 == T_STRUCT then do
+        s <- (read_SliceRange iprot)
+        read_SlicePredicate_fields iprot rec{f_SlicePredicate_slice_range=Just s}
+        else do
+          skip iprot _t60
+          read_SlicePredicate_fields iprot rec
+      _ -> do
+        skip iprot _t60
+        readFieldEnd iprot
+        read_SlicePredicate_fields iprot rec
+read_SlicePredicate iprot = do
+  readStructBegin iprot
+  rec <- read_SlicePredicate_fields iprot (SlicePredicate{f_SlicePredicate_column_names=Nothing,f_SlicePredicate_slice_range=Nothing})
+  readStructEnd iprot
+  return rec
+data KeySlice = KeySlice{f_KeySlice_key :: Maybe String,f_KeySlice_columns :: Maybe [ColumnOrSuperColumn]} deriving (Show,Eq,Ord,Typeable)
+write_KeySlice oprot rec = do
+  writeStructBegin oprot "KeySlice"
+  case f_KeySlice_key rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("key",T_STRING,1)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  case f_KeySlice_columns rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("columns",T_LIST,2)
+    (let {f [] = return (); f (_viter69:t) = do {write_ColumnOrSuperColumn oprot _viter69;f t}} in do {writeListBegin oprot (T_STRUCT,length _v); f _v;writeListEnd oprot})
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_KeySlice_fields iprot rec = do
+  (_,_t71,_id72) <- readFieldBegin iprot
+  if _t71 == T_STOP then return rec else
+    case _id72 of 
+      1 -> if _t71 == T_STRING then do
+        s <- readString iprot
+        read_KeySlice_fields iprot rec{f_KeySlice_key=Just s}
+        else do
+          skip iprot _t71
+          read_KeySlice_fields iprot rec
+      2 -> if _t71 == T_LIST then do
+        s <- (let {f 0 = return []; f n = do {v <- (read_ColumnOrSuperColumn iprot);r <- f (n-1); return $ v:r}} in do {(_etype76,_size73) <- readListBegin iprot; f _size73})
+        read_KeySlice_fields iprot rec{f_KeySlice_columns=Just s}
+        else do
+          skip iprot _t71
+          read_KeySlice_fields iprot rec
+      _ -> do
+        skip iprot _t71
+        readFieldEnd iprot
+        read_KeySlice_fields iprot rec
+read_KeySlice iprot = do
+  readStructBegin iprot
+  rec <- read_KeySlice_fields iprot (KeySlice{f_KeySlice_key=Nothing,f_KeySlice_columns=Nothing})
+  readStructEnd iprot
+  return rec
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,3 @@
+import Distribution.Simple
+main = defaultMain
+
diff --git a/cassandra-thrift.cabal b/cassandra-thrift.cabal
new file mode 100644
--- /dev/null
+++ b/cassandra-thrift.cabal
@@ -0,0 +1,28 @@
+name: cassandra-thrift 
+version: 0.0.1
+license: OtherLicense 
+cabal-version: >= 1.4
+author: Thrift v.0.2.0 
+maintainer: kirk@glyphsoftware.com 
+stability: alpha
+synopsis: thrift bindings to the cassandra database 
+description:
+  The Cassandra (v.0.5.1) database bindings, generated using the Thrift (v.0.2) compliler, Released under the Apache 2.0 license. 
+    
+category: Database 
+build-type: Simple
+homepage: http://cassandra.apache.org/ 
+Library
+    exposed-modules: Database.Cassandra.Thrift.Cassandra
+                     Database.Cassandra.Thrift.Cassandra_Client
+                     Database.Cassandra.Thrift.Cassandra_Consts 
+                     Database.Cassandra.Thrift.Cassandra_Iface
+                     Database.Cassandra.Thrift.Cassandra_Types
+
+    build-depends:   base >= 4 && < 5, 
+                     haskell98,
+                     containers,
+                     Thrift
+
+    include-dirs: Database 
+
