diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for describe
 
+##0.4.0.4 -- 2020-02-07
+
+* Changed `describeVia` semantics
+
 ##0.4.0.3 -- 2020-02-07
 
 * Added `describeVia` as an alternative to now-nonfunctional DerivingVia
diff --git a/describe.cabal b/describe.cabal
--- a/describe.cabal
+++ b/describe.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                describe
-version:             0.4.0.3
+version:             0.4.0.4
 synopsis:            Combinators for describing binary data structures
 description:         Combinators for describing binary data structures, which eliminate the boilerplate of having to write isomorphic Get and Put instances. Please see the Github page for examples.
 homepage:            https://github.com/riugabachi/describe
diff --git a/src/Data/Serialize/Describe/Class.hs b/src/Data/Serialize/Describe/Class.hs
--- a/src/Data/Serialize/Describe/Class.hs
+++ b/src/Data/Serialize/Describe/Class.hs
@@ -43,18 +43,18 @@
 -- | An alternative to DerivingVia, as the type variable @a@ of @Describe@ is bound to the type family @Context@ making its role @nominal@, and subsequently, uncoercible as per the semantics of DerivingVia. A restriction exists, however: both of the types specified must be @Coercible@.
 describeVia 
   :: Name 
-  -- ^ The type to inherit @describe@ from
+  -- ^ The type wrapper to inherit @describe@ from; must be of type (* -> *)
   -> Name
   --  ^ The type to create a @Describe@ instance for
   -> Q [Dec]
-describeVia src dst =
+describeVia wrp dst =
   [d| 
     instance Describe $destination where
-      type Context m $destination = Context m $source
+      type Context m $destination = Context m ($wrapper $destination)
       describe = lmap coerce coerce describe
   |]
   where
-    source = conT src
+    wrapper = conT wrp
     destination = conT dst
 
 -- | A descriptor from structure to field.
