Moving towards a pure API in the Haskell module with the understanding that it will require copying on the other side to pull off correctly. May undo this commit later in favor of moving the unsafePerformIOs into the higher level library.