 
 import Foreign
 import Foreign.C.Types
-import Foreign.C.String (CString, peekCString, withCString)
+import Foreign.C.String (CString, peekCString, newCString)
 import Foreign.Marshal.Array (peekArray, pokeArray)
 import Foreign.Ptr
 

    , CsOptionState(..)
    , CsOperand(..)
    , CsGroup(..)
    , CsDetail(..)
    , peekDetail
    , CsInsn(..)


The most notorious issues:
* wrap allocation and deallocation of structs, so that each pure function is
  a no-op to the runtime's state
* wrap datatype conversion between architecture specific enumerations and
  interger types. This is best done via typeclasses or type families.
* wrap instruction structures to provide better architecture separation
