diff --git a/Data/Atomics.hs b/Data/Atomics.hs
--- a/Data/Atomics.hs
+++ b/Data/Atomics.hs
@@ -241,7 +241,7 @@
 writeBarrier :: IO ()
 
 -- GHC 7.8 consistently exposes these symbols while linking:
-#if MIN_VERSION_base(4,7,0) 
+#if MIN_VERSION_base(4,7,0) && !defined(_WIN32) && !defined(_WIN64)
 foreign import ccall  unsafe "store_load_barrier" storeLoadBarrier
   :: IO () 
 
diff --git a/Data/Atomics/Internal.hs b/Data/Atomics/Internal.hs
--- a/Data/Atomics/Internal.hs
+++ b/Data/Atomics/Internal.hs
@@ -36,7 +36,7 @@
 {-# NOINLINE casMutVarTicketed# #-}
 {-# NOINLINE casArrayTicketed# #-}
 #else
-{-# INLINE casMutVarTicketed# #-}
+-- {-# INLINE casMutVarTicketed# #-}
 {-# INLINE casArrayTicketed# #-}
 -- I *think* inlining may be ok here as long as casting happens on the arrow types:
 #endif
@@ -67,14 +67,13 @@
 -- on the other hand, is a first-class object that can be handled by the user,
 -- but will not have its pointer identity changed by compiler optimizations
 -- (but will of course, change addresses during garbage collection).
-type Ticket a = Any a
+newtype Ticket a = Ticket Any
 -- If we allow tickets to be a pointer type, then the garbage collector will update
 -- the pointer when the object moves.
 
 instance Show (Ticket a) where
   show _ = "<CAS_ticket>"
 
-
 {-# NOINLINE ptrEq #-}
 ptrEq :: a -> a -> Bool
 ptrEq !x !y = I# (reallyUnsafePtrEquality# x y) == 1
@@ -105,7 +104,6 @@
 #else
   unsafeCoerce# casMutVar_TypeErased#
 #endif
-
 
 --------------------------------------------------------------------------------
 -- Type-erased versions that call the raw foreign primops:
diff --git a/atomic-primops.cabal b/atomic-primops.cabal
--- a/atomic-primops.cabal
+++ b/atomic-primops.cabal
@@ -1,5 +1,5 @@
 Name:                atomic-primops
-Version:             0.6.0.6
+Version:             0.6.1
 License:             BSD3
 License-file:        LICENSE
 Author:              Ryan Newton
@@ -33,6 +33,7 @@
 -- 0.6 -- add atomicModifyIORefCAS, and bump due to prev bugfixes
 -- 0.6.0.1 -- minor ghc 7.8 fix
 -- 0.6.0.5 -- fix for GHC 7.8
+-- 0.6.1   -- several bug fixes, mainly re: platform portability
 
 Synopsis: A safe approach to CAS and other atomic ops in Haskell.
 
diff --git a/testing/Test.hs b/testing/Test.hs
--- a/testing/Test.hs
+++ b/testing/Test.hs
@@ -1,15 +1,16 @@
 {-# LANGUAGE MagicHash, UnboxedTuples, BangPatterns, ScopedTypeVariables, NamedFieldPuns, CPP #-}
 
+module Test ( main,
+              test_all_hammer_one ) where
+
 -- | This test has three different modes which can be toggled via the
 -- C preprocessor.  Any subset of the three may be activated.
 
 import Control.Monad
 -- import Control.Monad.ST (stToIO)
 import Control.Exception (evaluate)
-import Control.Concurrent.MVar
 import Data.IORef (modifyIORef')
 import Data.Int
-import Data.Time.Clock
 import Data.Primitive.Array
 import Data.Word
 import qualified Data.Set as S
@@ -19,16 +20,11 @@
 import GHC.STRef
 import GHC.IORef
 import GHC.Stats (getGCStats, GCStats(..))
-import GHC.IO (unsafePerformIO)
 import System.Random (randomIO, randomRIO)
 import Test.HUnit (Assertion, assertEqual, assertBool)
-import Test.Framework  (Test, defaultMain, testGroup)
+import Test.Framework  (defaultMain)
 import Test.Framework.Providers.HUnit (testCase)
 import System.Mem (performGC)
-import System.Mem.StableName (makeStableName, hashStableName, StableName)
-import System.Environment (getEnvironment)
-import System.IO        (stdout, stderr, hPutStrLn, hFlush)
-import Debug.Trace      (trace)
 
 ----------------------------------------
 import Data.Atomics as A
diff --git a/testing/test-atomic-primops.cabal b/testing/test-atomic-primops.cabal
--- a/testing/test-atomic-primops.cabal
+++ b/testing/test-atomic-primops.cabal
@@ -15,10 +15,11 @@
     Description: Enable GHC threaded RTS.
     Default: True
 
+-- The MAIN test suite:
 Test-Suite test-atomic-primops
     type:       exitcode-stdio-1.0
     main-is:    Test.hs
-    ghc-options: -rtsopts
+    ghc-options: -rtsopts -main-is Test.main
 
     if flag(opt)
        ghc-options: -O2 -funbox-strict-fields
@@ -27,11 +28,9 @@
        ghc-options: -rtsopts -with-rtsopts=-N4
 
     -- Set it to always run with some parallelism.
-       
     build-depends: base, ghc-prim, primitive, containers, random, atomic-primops >= 0.6.0.5,
                    -- For Testing:
                    time, HUnit, test-framework, test-framework-hunit
-
     -- Optional: Debugging generated code:
     --    ghc-options: -keep-tmp-files -dsuppress-module-prefixes -ddump-to-file -ddump-core-stats -ddump-simpl-stats -dcore-lint -dcmm-lint
     --    ghc-options: -ddump-ds -ddump-simpl -ddump-stg -ddump-asm -ddump-bcos -ddump-cmm -ddump-opt-cmm -ddump-inlinings
@@ -75,3 +74,11 @@
   --   Buildable: False  
   -- }
 
+Benchmark atomic-primops-MicroBench
+  type:    exitcode-stdio-1.0
+  build-depends: base, ghc-prim, primitive, containers, random,
+                 atomic-primops >= 0.6.0.5, 
+                 deepseq >= 1.3, 
+                 time, HUnit, test-framework, test-framework-hunit
+  build-depends: criterion >= 1.0
+  main-is: MicroBench.hs
