diff --git a/SConstruct b/SConstruct
index 623bc5d8ef2ca99fe5ad79c5307426104078c736..78090c3a451b8e9b562407d55fc03fe948dcc824 100644
--- a/SConstruct
+++ b/SConstruct
@@ -68,10 +68,15 @@ if GetOption("coverage"):
                LDFLAGS=["-fprofile-arcs", "-ftest-coverage"],
                LIBS=['gcov'])
 
+env["CC"] = os.getenv("CC") or env["CC"]
+env["CXX"] = os.getenv("CXX") or env["CXX"]
+
 if os.getenv("CC") == "clang" or env['PLATFORM'] == 'darwin':
     env.Replace(CC="clang",
                 CXX="clang++")
 
+env["ENV"].update(x for x in os.environ.items() if x[0].startswith("CCC_"))
+
 #rootpath = env['ROOTPATH'] = os.path.abspath('.')
 #env.Append(CPPPATH=os.path.join('#', "hammer"))
 
diff --git a/src/parsers/choice.c b/src/parsers/choice.c
index 6db1378f1c01dea66698b8632548808b4fbe2984..bb55fa8dd96c32323b5fe201625c2fc4ca70c9b5 100644
--- a/src/parsers/choice.c
+++ b/src/parsers/choice.c
@@ -143,6 +143,8 @@ HParser* h_choice__ma(HAllocator* mm__, void *args[]) {
 
   s->len = len;
   HParser *ret = h_new(HParser, 1);
-  ret->vtable = &choice_vt; ret->env = (void*)s;
+  ret->vtable = &choice_vt;
+  ret->env = (void*)s;
+  ret->backend = PB_MIN;
   return ret;
 }
diff --git a/src/parsers/sequence.c b/src/parsers/sequence.c
index eff46109219caf7eaf4f178b4b5f96693d1ee85e..bdea8c02a45c4346a7523de97a7f6238ba12c246 100644
--- a/src/parsers/sequence.c
+++ b/src/parsers/sequence.c
@@ -145,20 +145,22 @@ HParser* h_sequence__a(void *args[]) {
 HParser* h_sequence__ma(HAllocator* mm__, void *args[]) {
   size_t len = -1; // because do...while
   const HParser *arg;
-  
+
   do {
     arg=((HParser **)args)[++len];
   } while(arg);
-  
+
   HSequence *s = h_new(HSequence, 1);
   s->p_array = h_new(HParser *, len);
 
   for (size_t i = 0; i < len; i++) {
     s->p_array[i] = ((HParser **)args)[i];
   }
-  
+
   s->len = len;
   HParser *ret = h_new(HParser, 1);
-  ret->vtable = &sequence_vt; ret->env = (void*)s;
+  ret->vtable = &sequence_vt;
+  ret->env = (void*)s;
+  ret->backend = PB_MIN;
   return ret;
 }