diff --git a/atmos.cabal b/atmos.cabal
--- a/atmos.cabal
+++ b/atmos.cabal
@@ -1,17 +1,18 @@
 name:                atmos
-version:             0.2.0.0
-synopsis:            1976 US Standard Atmosphere
+version:             0.3.0.0
+synopsis:            1976 US Standard Atmosphere Model
 description: {
-1976 US Standard Atmosphere
+1976 US Standard Atmosphere Model.
 .
-Adapted by Greg Horn from original programs by Ralph L. Carmichael, Public Domain Aeronautical Software
+Adapted by Greg Horn from original programs by Ralph L. Carmichael,
+Public Domain Aeronautical Software.
 .
-The original code can be found at <http://www.pdas.com/atmos.html>
+The original code can be found at <http://www.pdas.com/atmos.html>.
 }
 license:             PublicDomain
 author:              Greg Horn
 maintainer:          gregmainland@gmail.com
-copyright:           (c) Greg Horn 2012-2014
+copyright:           (c) Greg Horn 2012-2015
 category:            Science
 build-type:          Simple
 cabal-version:       >=1.8
@@ -19,9 +20,13 @@
 library
    hs-source-dirs:      src
    exposed-modules:     Atmosphere
+                        Atmosphere.Dimensional
+                        Atmosphere.DimensionalTF
    other-modules:       Atmosphere.Constants
 
    build-depends:       base >= 4 && < 5
+                       , dimensional >= 1.0.0.0
+                       , dimensional-tf >= 0.1.1
 
 
 test-suite unit-tests
diff --git a/src/Atmosphere/Dimensional.hs b/src/Atmosphere/Dimensional.hs
new file mode 100644
--- /dev/null
+++ b/src/Atmosphere/Dimensional.hs
@@ -0,0 +1,41 @@
+{-# OPTIONS_GHC -Wall #-}
+
+-- | This is a thin wrapper on top of the atmos package.
+-- It provides the exaxt same functions but uses units
+-- from the dimensional package.
+module Atmosphere.Dimensional
+       ( Atmos(..)
+       , atmosphere
+       , altitudeFromPressure
+       ) where
+
+import qualified Atmosphere as A
+
+import qualified Prelude ()
+import Numeric.Units.Dimensional.Prelude
+
+data Atmos a = Atmos { atmosTemperature :: ThermodynamicTemperature a
+                     , atmosPressure :: Pressure a
+                     , atmosDensity :: Density a
+                     , atmosSpeedOfSound :: Velocity a
+                     , atmosViscosity :: DynamicViscosity a
+                     , atmosKinematicViscosity :: KinematicViscosity a
+                     }
+
+atmosphere :: (Floating a, Ord a) => Length a -> Atmos a
+atmosphere alt = Atmos
+                 { atmosTemperature        = temp *~ kelvin
+                 , atmosPressure           = pressure *~ pascal
+                 , atmosDensity            = density *~ (kilo gram / meter ^ pos3)
+                 , atmosSpeedOfSound       = asound *~ (meter / second)
+                 , atmosViscosity          = viscosity *~ (newton * second / meter ^ pos2)
+                 , atmosKinematicViscosity = kinematicViscosity *~ (meter ^ pos2 / second)
+                 }
+  where
+    A.Atmos temp pressure density asound viscosity kinematicViscosity = A.siAtmosphere (alt /~ meter)
+
+altitudeFromPressure :: (Floating a, Ord a) => Pressure a -> Length a
+altitudeFromPressure dimPressure = siAltitude *~ meter
+  where
+    siAltitude = A.siAltitudeFromPressure siPressure
+    siPressure = dimPressure /~ pascal
diff --git a/src/Atmosphere/DimensionalTF.hs b/src/Atmosphere/DimensionalTF.hs
new file mode 100644
--- /dev/null
+++ b/src/Atmosphere/DimensionalTF.hs
@@ -0,0 +1,41 @@
+{-# OPTIONS_GHC -Wall #-}
+
+-- | This is a thin wrapper on top of the atmos package.
+-- It provides the exaxt same functions but uses units
+-- from the dimensional-tf package.
+module Atmosphere.DimensionalTF
+       ( Atmos(..)
+       , atmosphere
+       , altitudeFromPressure
+       ) where
+
+import qualified Atmosphere as A
+
+import qualified Prelude ()
+import Numeric.Units.Dimensional.TF.Prelude
+
+data Atmos a = Atmos { atmosTemperature :: ThermodynamicTemperature a
+                     , atmosPressure :: Pressure a
+                     , atmosDensity :: Density a
+                     , atmosSpeedOfSound :: Velocity a
+                     , atmosViscosity :: DynamicViscosity a
+                     , atmosKinematicViscosity :: KinematicViscosity a
+                     }
+
+atmosphere :: (Floating a, Ord a) => Length a -> Atmos a
+atmosphere alt = Atmos
+                 { atmosTemperature        = temp *~ kelvin
+                 , atmosPressure           = pressure *~ pascal
+                 , atmosDensity            = density *~ (kilo gram / meter ^ pos3)
+                 , atmosSpeedOfSound       = asound *~ (meter / second)
+                 , atmosViscosity          = viscosity *~ (newton * second / meter ^ pos2)
+                 , atmosKinematicViscosity = kinematicViscosity *~ (meter ^ pos2 / second)
+                 }
+  where
+    A.Atmos temp pressure density asound viscosity kinematicViscosity = A.siAtmosphere (alt /~ meter)
+
+altitudeFromPressure :: (Floating a, Ord a) => Pressure a -> Length a
+altitudeFromPressure dimPressure = siAltitude *~ meter
+  where
+    siAltitude = A.siAltitudeFromPressure siPressure
+    siPressure = dimPressure /~ pascal
