diff --git a/TODO b/TODO
new file mode 100644
--- /dev/null
+++ b/TODO
@@ -0,0 +1,2 @@
+* backwards compatibility with older libpcres (e.g. pcre3 on debian)
+* some tests fail for strange reasons
diff --git a/Text/Regex/PCRE/Light.hs b/Text/Regex/PCRE/Light.hs
--- a/Text/Regex/PCRE/Light.hs
+++ b/Text/Regex/PCRE/Light.hs
@@ -31,8 +31,8 @@
 
         , anchored
         , auto_callout
-        , bsr_anycrlf
-        , bsr_unicode
+        {-, bsr_anycrlf-}
+        {-, bsr_unicode-}
         , caseless
         , dollar_endonly
         , dotall
@@ -41,8 +41,8 @@
         , extra
         , firstline
         , multiline
-        , newline_any
-        , newline_anycrlf
+        {-, newline_any-}
+        {-, newline_anycrlf-}
         , newline_cr
         , newline_crlf
         , newline_lf
@@ -55,8 +55,8 @@
         , PCREExecOption
 
         , exec_anchored
-        , exec_newline_any
-        , exec_newline_anycrlf
+        {-, exec_newline_any     -}
+        {-, exec_newline_anycrlf -}
         , exec_newline_cr
         , exec_newline_crlf
         , exec_newline_lf
diff --git a/Text/Regex/PCRE/Light/Base.hsc b/Text/Regex/PCRE/Light/Base.hsc
--- a/Text/Regex/PCRE/Light/Base.hsc
+++ b/Text/Regex/PCRE/Light/Base.hsc
@@ -32,11 +32,11 @@
         , PCREOption
         , combineOptions
 
-        , anchored , auto_callout , bsr_anycrlf
-        , bsr_unicode , caseless , dollar_endonly
+        , anchored , auto_callout {-, bsr_anycrlf-}
+        {-, bsr_unicode-} , caseless , dollar_endonly
         , dotall , dupnames , extended
         , extra , firstline , multiline
-        , newline_any , newline_anycrlf , newline_cr
+        {-, newline_any-} {-, newline_anycrlf-} , newline_cr
         , newline_crlf , newline_lf , no_auto_capture
         , ungreedy , utf8 , no_utf8_check
 
@@ -44,7 +44,7 @@
         , PCREExecOption
         , combineExecOptions
 
-        , exec_anchored , exec_newline_any , exec_newline_anycrlf
+        , exec_anchored {-, exec_newline_any , exec_newline_anycrlf-}
         , exec_newline_cr , exec_newline_crlf , exec_newline_lf
         , exec_notbol , exec_noteol , exec_notempty
         , exec_no_utf8_check , exec_partial
@@ -54,13 +54,13 @@
         , PCREError
 
         , error_nomatch , error_null , error_badoption
-        , error_badmagic , error_unknown_opcode , error_unknown_node
+        , error_badmagic {-, error_unknown_opcode-} , error_unknown_node
         , error_nomemory , error_nosubstring , error_matchlimit
         , error_callout , error_badutf8 , error_badutf8_offset
         , error_partial , error_badpartial , error_internal
         , error_badcount , error_dfa_uitem , error_dfa_ucond
         , error_dfa_umlimit , error_dfa_wssize , error_dfa_recurse
-        , error_recursionlimit , error_nullwslimit, error_badnewline
+        , error_recursionlimit {-, error_nullwslimit-} {-, error_badnewline-}
 
         -- * PCRE Info
         , PCREInfo
@@ -69,8 +69,8 @@
         , info_backrefmax , info_firstbyte , info_firstchar
         , info_firsttable , info_lastliteral , info_nameentrysize
         , info_namecount , info_nametable , info_studysize
-        , info_default_tables , info_okpartial , info_jchanged
-        , info_hascrorlf
+        , info_default_tables {-, info_okpartial-} {-, info_jchanged-}
+        {-, info_hascrorlf-}
 
         -- * PCRE Configuration
         , PCREConfig
@@ -78,7 +78,7 @@
         , config_utf8 , config_newline , config_link_size
         , config_posix_malloc_threshold , config_match_limit
         , config_stackrecurse , config_unicode_properties
-        , config_match_limit_recursion , config_bsr
+        , config_match_limit_recursion {-, config_bsr-}
 
         -- * PCRE Extra
         , PCREExtraFlags
@@ -168,13 +168,13 @@
 -- built. It can be overridden from within the pattern, or by setting an option
 -- when a compiled pattern is matched.
 --
-bsr_anycrlf        :: PCREOption
-bsr_anycrlf        = PCREOption bsr_anycrlf_cint
+-- bsr_anycrlf        :: PCREOption
+-- bsr_anycrlf        = PCREOption bsr_anycrlf_cint
 
 -- | 'bsr_unicode'. See 'bse_anycrlf'
 --
-bsr_unicode        :: PCREOption
-bsr_unicode        = PCREOption bsr_unicode_cint
+-- bsr_unicode        :: PCREOption
+-- bsr_unicode        = PCREOption bsr_unicode_cint
 
 -- | 'caseless'
 --
@@ -323,12 +323,12 @@
 -- The newline option that is set at compile time becomes the
 -- default that is used for 'exec' but it can be overridden.
 -- 
-newline_any        :: PCREOption
-newline_any        = PCREOption newline_any_cint
+-- newline_any        :: PCREOption
+-- newline_any        = PCREOption newline_any_cint
 
 -- | 'newline_anycrlf', see 'newline_any'
-newline_anycrlf    :: PCREOption
-newline_anycrlf    = PCREOption newline_anycrlf_cint
+-- newline_anycrlf    :: PCREOption
+-- newline_anycrlf    = PCREOption newline_anycrlf_cint
 
 -- | 'newline_cr', see 'newline_any'
 newline_cr         :: PCREOption
@@ -401,8 +401,6 @@
 #{enum PCREOption_,
   , anchored_cint        = PCRE_ANCHORED
   , auto_callout_cint    = PCRE_AUTO_CALLOUT
-  , bsr_anycrlf_cint     = PCRE_BSR_ANYCRLF
-  , bsr_unicode_cint     = PCRE_BSR_UNICODE
   , caseless_cint        = PCRE_CASELESS
   , dollar_endonly_cint  = PCRE_DOLLAR_ENDONLY
   , dotall_cint          = PCRE_DOTALL
@@ -411,8 +409,6 @@
   , extra_cint           = PCRE_EXTRA
   , firstline_cint       = PCRE_FIRSTLINE
   , multiline_cint       = PCRE_MULTILINE
-  , newline_any_cint     = PCRE_NEWLINE_ANY
-  , newline_anycrlf_cint = PCRE_NEWLINE_ANYCRLF
   , newline_cr_cint      = PCRE_NEWLINE_CR
   , newline_crlf_cint    = PCRE_NEWLINE_CRLF
   , newline_lf_cint      = PCRE_NEWLINE_LF
@@ -422,6 +418,11 @@
   , no_utf8_check_cint   = PCRE_NO_UTF8_CHECK
   }
 
+--  , bsr_anycrlf_cint     = PCRE_BSR_ANYCRLF
+--  , bsr_unicode_cint     = PCRE_BSR_UNICODE
+--  , newline_any_cint     = PCRE_NEWLINE_ANY
+--  , newline_anycrlf_cint = PCRE_NEWLINE_ANYCRLF
+
 ------------------------------------------------------------------------
 
 -- | PCRE exec options, to be passed to exec
@@ -482,12 +483,12 @@
 -- occur when CRLF is a valid newline sequence and explicit
 -- \\r or \\n escapes appear in the pattern.
 --
-exec_newline_any           :: PCREExecOption
-exec_newline_any           = PCREExecOption exec_newline_any_cint
+-- exec_newline_any           :: PCREExecOption
+-- exec_newline_any           = PCREExecOption exec_newline_any_cint
 
 -- | 'exec_newline_anycrlf', see 'exec_newline_any'
-exec_newline_anycrlf       :: PCREExecOption
-exec_newline_anycrlf       = PCREExecOption exec_newline_anycrlf_cint
+-- exec_newline_anycrlf       :: PCREExecOption
+-- exec_newline_anycrlf       = PCREExecOption exec_newline_anycrlf_cint
 
 -- | 'exec_newline_cr', see 'exec_newline_any'
 exec_newline_cr            :: PCREExecOption
@@ -607,8 +608,6 @@
 -- PCRE exec options
 #{enum PCREExecOption_,
   , exec_anchored_cint        = PCRE_ANCHORED
-  , exec_newline_any_cint     = PCRE_NEWLINE_ANY
-  , exec_newline_anycrlf_cint = PCRE_NEWLINE_ANYCRLF
   , exec_newline_cr_cint      = PCRE_NEWLINE_CR
   , exec_newline_crlf_cint    = PCRE_NEWLINE_CRLF
   , exec_newline_lf_cint      = PCRE_NEWLINE_LF
@@ -619,6 +618,8 @@
   , exec_partial_cint         = PCRE_PARTIAL
   }
 
+--  , exec_newline_any_cint     = PCRE_NEWLINE_ANY
+--  , exec_newline_anycrlf_cint = PCRE_NEWLINE_ANYCRLF
 --  , dfa_shortest   = PCRE_DFA_SHORTEST
 --  , dfa_restart    = PCRE_DFA_RESTART
 
@@ -632,7 +633,6 @@
     , error_null           = PCRE_ERROR_NULL
     , error_badoption      = PCRE_ERROR_BADOPTION
     , error_badmagic       = PCRE_ERROR_BADMAGIC
-    , error_unknown_opcode = PCRE_ERROR_UNKNOWN_OPCODE
     , error_unknown_node   = PCRE_ERROR_UNKNOWN_NODE
     , error_nomemory       = PCRE_ERROR_NOMEMORY
     , error_nosubstring    = PCRE_ERROR_NOSUBSTRING
@@ -650,10 +650,12 @@
     , error_dfa_wssize     = PCRE_ERROR_DFA_WSSIZE
     , error_dfa_recurse    = PCRE_ERROR_DFA_RECURSE
     , error_recursionlimit = PCRE_ERROR_RECURSIONLIMIT
-    , error_nullwslimit    = PCRE_ERROR_NULLWSLIMIT
-    , error_badnewline     = PCRE_ERROR_BADNEWLINE
     }
 
+--  , error_unknown_opcode = PCRE_ERROR_UNKNOWN_OPCODE
+--  , error_nullwslimit    = PCRE_ERROR_NULLWSLIMIT
+--  , error_badnewline     = PCRE_ERROR_BADNEWLINE
+
 ------------------------------------------------------------------------
 -- Request types for fullinfo() */
 
@@ -674,11 +676,12 @@
     , info_nametable       = PCRE_INFO_NAMETABLE
     , info_studysize       = PCRE_INFO_STUDYSIZE
     , info_default_tables  = PCRE_INFO_DEFAULT_TABLES
-    , info_okpartial       = PCRE_INFO_OKPARTIAL
-    , info_jchanged        = PCRE_INFO_JCHANGED
-    , info_hascrorlf       = PCRE_INFO_HASCRORLF
     }
 
+--  , info_okpartial       = PCRE_INFO_OKPARTIAL
+--  , info_jchanged        = PCRE_INFO_JCHANGED
+--  , info_hascrorlf       = PCRE_INFO_HASCRORLF
+
 ------------------------------------------------------------------------
 
 -- | Request types for config()
@@ -693,8 +696,10 @@
     , config_stackrecurse           = PCRE_CONFIG_STACKRECURSE
     , config_unicode_properties     = PCRE_CONFIG_UNICODE_PROPERTIES
     , config_match_limit_recursion  = PCRE_CONFIG_MATCH_LIMIT_RECURSION
-    , config_bsr                    = PCRE_CONFIG_BSR
     }
+
+-- Not portable
+--  , config_bsr                    = PCRE_CONFIG_BSR
 
 
 ------------------------------------------------------------------------
diff --git a/Text/Regex/PCRE/Light/Char8.hs b/Text/Regex/PCRE/Light/Char8.hs
--- a/Text/Regex/PCRE/Light/Char8.hs
+++ b/Text/Regex/PCRE/Light/Char8.hs
@@ -30,8 +30,8 @@
 
         , anchored
         , auto_callout
-        , bsr_anycrlf
-        , bsr_unicode
+        {-, bsr_anycrlf-}
+        {-, bsr_unicode-}
         , caseless
         , dollar_endonly
         , dotall
@@ -40,8 +40,8 @@
         , extra
         , firstline
         , multiline
-        , newline_any
-        , newline_anycrlf
+        {-, newline_any-}
+        {-, newline_anycrlf-}
         , newline_cr
         , newline_crlf
         , newline_lf
@@ -54,8 +54,8 @@
         , PCREExecOption
 
         , exec_anchored
-        , exec_newline_any
-        , exec_newline_anycrlf
+        {-, exec_newline_any     -}
+        {-, exec_newline_anycrlf -}
         , exec_newline_cr
         , exec_newline_crlf
         , exec_newline_lf
diff --git a/pcre-light.cabal b/pcre-light.cabal
--- a/pcre-light.cabal
+++ b/pcre-light.cabal
@@ -1,5 +1,5 @@
 name:            pcre-light
-version:         0.2
+version:         0.2.1
 homepage:        http://code.haskell.org/~dons/code/pcre-light
 synopsis:        A small, efficient and portable regex library for Perl 5 compatible regular expressions
 description:
