diff --git a/picosat.cabal b/picosat.cabal
--- a/picosat.cabal
+++ b/picosat.cabal
@@ -1,28 +1,29 @@
 name:                picosat
-version:             0.1.0.0
+version:             0.1.0.1
 synopsis:            Bindings to the PicoSAT solver
-homepage:            http://www.stephendiehl.com
+homepage:            https://github.com/sdiehl/haskell-picosat
 license:             MIT
 license-file:        LICENSE
 author:              Stephen Diehl
 maintainer:          stephen.m.diehl@gmail.com
 copyright:           2012 Stephen Diehl
-category:            Math
+Category:            Logic
 build-type:          Simple
 cabal-version:       >=1.10
 extra-source-files:  
   cbits/picosat.h
 Bug-Reports:         https://github.com/sdiehl/haskell-picosat/issues
 
-Category: Logic
 Description:
   `picosat` provides bindings for the fast PicoSAT solver library.
 Source-Repository head
     Type: git
-    Location: https://github.com/sdiehl/haskell-picosat
+    Location: git@github.com:sdiehl/haskell-picosat.git
 
 library
   exposed-modules:     Picosat
+  other-extensions:
+    ForeignFunctionInterface
 
   Cc-options:          
   Ghc-options:        -Wall
diff --git a/src/Picosat.hs b/src/Picosat.hs
--- a/src/Picosat.hs
+++ b/src/Picosat.hs
@@ -1,5 +1,19 @@
 {-# LANGUAGE ForeignFunctionInterface #-}
 
+{- | The solve function takes a nested list of integers representing variables in clauses and returns the
+   solution. Usage:
+
+@
+import Picosat
+
+main :: IO [Int]
+main = do
+  solve [[1, -2, 3], [2,4,5], [4,6]]
+  -- Solution [1,-2,3,4,5,6]
+@
+
+-}
+
 module Picosat (
   solve,
   solveST,
@@ -17,24 +31,22 @@
 import Foreign.Ptr
 import Foreign.C.Types
 
-default (Int)
-
-foreign import ccall unsafe "picosat_init" picosat_init
+foreign import ccall safe "picosat_init" picosat_init
     :: IO (Ptr a)
 
-foreign import ccall unsafe "picosat_reset" picosat_reset
+foreign import ccall safe "picosat_reset" picosat_reset
     :: Ptr a -> IO ()
 
-foreign import ccall unsafe "picosat_add" picosat_add
+foreign import ccall safe "picosat_add" picosat_add
     :: Ptr a -> CInt -> IO CInt
 
-foreign import ccall unsafe "picosat_variables" picosat_variables
+foreign import ccall safe "picosat_variables" picosat_variables
     :: Ptr a -> IO CInt
 
-foreign import ccall unsafe "picosat_sat" picosat_sat
+foreign import ccall safe "picosat_sat" picosat_sat
     :: Ptr a -> CInt -> IO CInt
 
-foreign import ccall unsafe "picosat_deref" picosat_deref
+foreign import ccall safe "picosat_deref" picosat_deref
     :: Ptr a -> CInt -> IO CInt
 
 unknown, satisfiable, unsatisfiable :: CInt
@@ -69,12 +81,12 @@
       | a == satisfiable   -> getSolution pico
       | otherwise          -> error "Picosat error."
 
-toCIntegers :: Integral a => [[a]] -> [[CInt]]
-toCIntegers = map $ map fromIntegral
+toCInts :: Integral a => [[a]] -> [[CInt]]
+toCInts = map $ map fromIntegral
 
 solve :: Integral a => [[a]] -> IO Solution
 solve cls = do
-  let ccls = toCIntegers cls
+  let ccls = toCInts cls
   pico <- picosat_init
   _ <- addClauses pico ccls
   sol <- solution pico
