diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,13 @@
 # Revision history for skylighting
 
+## 0.4 --- 2017-09-15
+
+  * Removed ToJSON/FromJSON instances for KeywordAttr,
+    WordSet, Matcher, Context, ContextSwitch, Rule, Syntax
+    (added in 0.3.5).  Creating these increased the memory
+    requirements for compiling skylighting to a degree not
+    justified by the usefulness of these instances.
+
 ## 0.3.5 --- 2017-09-14
 
   * Added ToJSON/FromJSON instances for all basic types.
diff --git a/skylighting.cabal b/skylighting.cabal
--- a/skylighting.cabal
+++ b/skylighting.cabal
@@ -1,5 +1,5 @@
 name:                skylighting
-version:             0.3.5
+version:             0.4
 synopsis:            syntax highlighting library
 description:         Skylighting is a syntax highlighting library with
                      support for over one hundred languages.  It derives
diff --git a/src/Skylighting/Types.hs b/src/Skylighting/Types.hs
--- a/src/Skylighting/Types.hs
+++ b/src/Skylighting/Types.hs
@@ -66,10 +66,6 @@
 
 instance Binary KeywordAttr
 
-instance ToJSON KeywordAttr where
-  toEncoding = genericToEncoding defaultOptions
-instance FromJSON KeywordAttr
-
 -- | A set of "words," possibly case insensitive.
 data WordSet a = CaseSensitiveWords (Set.Set a)
                | CaseInsensitiveWords (Set.Set a)
@@ -77,10 +73,6 @@
 
 instance Binary a => Binary (WordSet a)
 
-instance ToJSON a => ToJSON (WordSet a) where
-  toEncoding = genericToEncoding defaultOptions
-instance (FromJSON a, Ord a) => FromJSON (WordSet a)
-
 -- | A set of words to match (either case-sensitive or case-insensitive).
 makeWordSet :: (FoldCase a, Ord a) => Bool -> [a] -> WordSet a
 makeWordSet True ws  = CaseSensitiveWords (Set.fromList ws)
@@ -113,10 +105,6 @@
   | DetectIdentifier
   deriving (Show, Read, Eq, Ord, Data, Typeable, Generic)
 
-instance ToJSON Matcher where
-  toEncoding = genericToEncoding defaultOptions
-instance FromJSON Matcher
-
 instance Binary Matcher
 
 -- | A context switch, either pops or pushes a context.
@@ -126,10 +114,6 @@
 
 instance Binary ContextSwitch
 
-instance ToJSON ContextSwitch where
-  toEncoding = genericToEncoding defaultOptions
-instance FromJSON ContextSwitch
-
 -- | A rule corresponds to one of the elements of a Kate syntax
 -- highlighting "context."
 data Rule = Rule{
@@ -147,10 +131,6 @@
 
 instance Binary Rule
 
-instance ToJSON Rule where
-  toEncoding = genericToEncoding defaultOptions
-instance FromJSON Rule
-
 -- | A syntax corresponds to a complete Kate syntax description.
 -- The 'sShortname' field is derived from the filename.
 data Syntax = Syntax{
@@ -167,10 +147,6 @@
 
 instance Binary Syntax
 
-instance ToJSON Syntax where
-  toEncoding = genericToEncoding defaultOptions
-instance FromJSON Syntax
-
 -- | A map of syntaxes, keyed by full name.
 type SyntaxMap = Map.Map Text Syntax
 
@@ -190,10 +166,6 @@
 } deriving (Show, Read, Eq, Ord, Data, Typeable, Generic)
 
 instance Binary Context
-
-instance ToJSON Context where
-  toEncoding = genericToEncoding defaultOptions
-instance FromJSON Context
 
 -- | A pair consisting of a list of attributes and some text.
 type Token = (TokenType, Text)
