diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,4 +0,0 @@
-import           Distribution.ATS
-
-main :: IO ()
-main = atsPolyglotBuild
diff --git a/ats-src/combinatorics.dats b/ats-src/combinatorics.dats
--- a/ats-src/combinatorics.dats
+++ b/ats-src/combinatorics.dats
@@ -150,10 +150,11 @@
 // TODO stirling numbers of the second kind.
 // Bell numbers. These can't be called via the FFI because of the mutually
 // recursive functions, so we should probably think of something else.
-fnx bell {n:nat}(n : int(n)) : intinfGt(0) =
+fun bell {n:nat}(n : int(n)) : intinfGt(0) =
   case- n of
     | 0 => int2intinf(1)
     | n when n >= 0 =>> sum_loop(n, n)
+
 and sum_loop {n:nat}{ m : nat | m >= 1 && m <= n } .<m>. (n : int(n), i : int(m)) : intinfGt(0) =
   case+ i of
     | 1 => int2intinf(1)
diff --git a/cbits/combinatorics.c b/cbits/combinatorics.c
--- a/cbits/combinatorics.c
+++ b/cbits/combinatorics.c
@@ -718,6 +718,10 @@
 
 ATSstatic()
 atstkind_type(atstype_ptrk)
+sum_loop_80(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
 ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__19(atstkind_t0ype(atstype_int)) ;
 
 ATSstatic()
@@ -5593,28 +5597,9 @@
 bell_79(atstkind_t0ype(atstype_int) arg0)
 {
 /* tmpvardeclst(beg) */
-ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
 ATStmpdec(tmpret193, atstkind_type(atstype_ptrk)) ;
 ATStmpdec(tmp198, atstkind_t0ype(atstype_bool)) ;
 /* tmpvardeclst(end) */
-/*
-emit_funent_fnxdeclst:
-*/
-ATStmpdec(a2rg0, atstkind_t0ype(atstype_int)) ;
-ATStmpdec(a2rg1, atstkind_t0ype(atstype_int)) ;
-/* tmpvardeclst(beg) */
-ATStmpdec(a2py0, atstkind_t0ype(atstype_int)) ;
-ATStmpdec(a2py1, atstkind_t0ype(atstype_int)) ;
-ATStmpdec(tmpret203, atstkind_type(atstype_ptrk)) ;
-ATStmpdec(tmpref208, atstkind_type(atstype_ptrk)) ;
-ATStmpdec(tmp209, atstkind_t0ype(atstype_int)) ;
-ATStmpdec(tmpref210, atstkind_type(atstype_ptrk)) ;
-ATStmpdec(tmpref211, atstkind_type(atstype_ptrk)) ;
-ATStmpdec(tmpref212, atstkind_type(atstype_ptrk)) ;
-ATStmpdec(tmpref217, atstkind_type(atstype_ptrk)) ;
-// ATStmpdec_void(tmp220) ;
-// ATStmpdec_void(tmp223) ;
-/* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
 emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4347(line=153, offs=5) -- 4464(line=156, offs=39)
@@ -5682,13 +5667,7 @@
 /*
 emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4450(line=156, offs=25) -- 4464(line=156, offs=39)
 */
-ATStailcal_beg()
-ATSINSmove_tlcal(a2py0, arg0) ;
-ATSINSmove_tlcal(a2py1, arg0) ;
-ATSINSargmove_tlcal(a2rg0, a2py0) ;
-ATSINSargmove_tlcal(a2rg1, a2py1) ;
-ATSINSfgoto(__patsflab_sum_loop_80) ;
-ATStailcal_end()
+ATSINSmove(tmpret193, sum_loop_80(arg0, arg0)) ;
 
 ATSbranch_end()
 
@@ -5699,16 +5678,39 @@
 
 ATSfunbody_end()
 ATSreturn(tmpret193) ;
+} /* end of [bell_79] */
+
 /*
-emit_funent_fnxbodylst:
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4470(line=158, offs=5) -- 4891(line=171, offs=8)
 */
+/*
+local: choose_62$0(level=0), bell_79$0(level=0), sum_loop_80$0(level=0)
+global: fact_ref_28$0(level=0), fact_34$0(level=0), choose_62$0(level=0), bell_79$0(level=0), sum_loop_80$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+sum_loop_80(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret203, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref208, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp209, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref210, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref211, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref212, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref217, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp220) ;
+// ATStmpdec_void(tmp223) ;
+/* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4469(line=157, offs=5) -- 4890(line=170, offs=8)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4470(line=158, offs=5) -- 4891(line=171, offs=8)
 */
 ATSINSflab(__patsflab_sum_loop_80):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4565(line=158, offs=3) -- 4890(line=170, offs=8)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4566(line=159, offs=3) -- 4891(line=171, offs=8)
 */
 ATScaseof_beg()
 /*
@@ -5716,15 +5718,15 @@
 */
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4582(line=159, offs=7) -- 4583(line=159, offs=8)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4583(line=160, offs=7) -- 4584(line=160, offs=8)
 */
 ATSINSlab(__atstmplab39):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4535(line=157, offs=71) -- 4536(line=157, offs=72)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4536(line=158, offs=71) -- 4537(line=158, offs=72)
 */
-ATSifnthen(ATSCKpat_int(a2rg1, ATSPMVint(1))) { ATSINSgoto(__atstmplab41) ; } ;
+ATSifnthen(ATSCKpat_int(arg1, ATSPMVint(1))) { ATSINSgoto(__atstmplab41) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4583(line=159, offs=8) -- 4583(line=159, offs=8)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4584(line=160, offs=8) -- 4584(line=160, offs=8)
 */
 ATSINSlab(__atstmplab40):
 /*
@@ -5734,7 +5736,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4587(line=159, offs=12) -- 4600(line=159, offs=25)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4588(line=160, offs=12) -- 4601(line=160, offs=25)
 */
 ATSINSmove(tmpret203, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__20(ATSPMVi0nt(1))) ;
 
@@ -5742,7 +5744,7 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4608(line=160, offs=8) -- 4608(line=160, offs=8)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4609(line=161, offs=8) -- 4609(line=161, offs=8)
 */
 ATSINSlab(__atstmplab41):
 /*
@@ -5752,78 +5754,78 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4613(line=160, offs=13) -- 4890(line=170, offs=8)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4614(line=161, offs=13) -- 4891(line=171, offs=8)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4627(line=161, offs=11) -- 4628(line=161, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4628(line=162, offs=11) -- 4629(line=162, offs=12)
 */
 /*
 ATSINStmpdec(tmpref208) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4643(line=161, offs=27) -- 4648(line=161, offs=32)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4644(line=162, offs=27) -- 4649(line=162, offs=32)
 */
-ATSINSmove(tmp209, atspre_g1int_sub_int(a2rg1, ATSPMVi0nt(1))) ;
+ATSINSmove(tmp209, atspre_g1int_sub_int(arg1, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4631(line=161, offs=15) -- 4649(line=161, offs=33)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4632(line=162, offs=15) -- 4650(line=162, offs=33)
 */
-ATSINSmove(tmpref208, sum_loop_80(a2rg0, tmp209)) ;
+ATSINSmove(tmpref208, sum_loop_80(arg0, tmp209)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4660(line=162, offs=11) -- 4661(line=162, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4661(line=163, offs=11) -- 4662(line=163, offs=12)
 */
 /*
 ATSINStmpdec(tmpref210) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4664(line=162, offs=15) -- 4670(line=162, offs=21)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4665(line=163, offs=15) -- 4671(line=163, offs=21)
 */
-ATSINSmove(tmpref210, bell_79(a2rg1)) ;
+ATSINSmove(tmpref210, bell_79(arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4682(line=163, offs=11) -- 4683(line=163, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4683(line=164, offs=11) -- 4684(line=164, offs=12)
 */
 /*
 ATSINStmpdec(tmpref211) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4686(line=163, offs=15) -- 4698(line=163, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4687(line=164, offs=15) -- 4699(line=164, offs=27)
 */
-ATSINSmove(tmpref211, choose_62(a2rg0, a2rg1)) ;
+ATSINSmove(tmpref211, choose_62(arg0, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4709(line=164, offs=11) -- 4716(line=164, offs=18)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4710(line=165, offs=11) -- 4717(line=165, offs=18)
 */
 /*
 ATSINStmpdec(tmpref212) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4719(line=164, offs=21) -- 4744(line=164, offs=46)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4720(line=165, offs=21) -- 4745(line=165, offs=46)
 */
 ATSINSmove(tmpref212, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_intinf1__88__1(tmpref211, ATSPMVrefarg0(tmpref210))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4755(line=165, offs=11) -- 4758(line=165, offs=14)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4756(line=166, offs=11) -- 4759(line=166, offs=14)
 */
 /*
 ATSINStmpdec(tmpref217) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4761(line=165, offs=17) -- 4792(line=165, offs=48)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4762(line=166, offs=17) -- 4793(line=166, offs=48)
 */
 ATSINSmove(tmpref217, ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6__3(tmpref212, ATSPMVrefarg0(tmpref208))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4807(line=166, offs=15) -- 4820(line=166, offs=28)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4808(line=167, offs=15) -- 4821(line=167, offs=28)
 */
 ATSINSmove_void(tmp220, ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__4(tmpref210)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4836(line=167, offs=15) -- 4849(line=167, offs=28)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4837(line=168, offs=15) -- 4850(line=168, offs=28)
 */
 ATSINSmove_void(tmp223, ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__5(tmpref208)) ;
 
@@ -5832,11 +5834,11 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4864(line=169, offs=7) -- 4881(line=169, offs=24)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4865(line=170, offs=7) -- 4882(line=170, offs=24)
 */
 ATSINSmove(tmpret203, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmpref217)) ;
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4613(line=160, offs=13) -- 4890(line=170, offs=8)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4614(line=161, offs=13) -- 4891(line=171, offs=8)
 */
 /*
 INSletpop()
@@ -5850,7 +5852,7 @@
 
 ATSfunbody_end()
 ATSreturn(tmpret203) ;
-} /* end of [bell_79] */
+} /* end of [sum_loop_80] */
 
 /*
 /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
@@ -6417,7 +6419,7 @@
 } /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__5] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4895(line=172, offs=4) -- 5324(line=189, offs=6)
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4896(line=173, offs=4) -- 5325(line=190, offs=6)
 */
 /*
 local: choose_62$0(level=0)
@@ -6436,23 +6438,23 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4895(line=172, offs=4) -- 5324(line=189, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4896(line=173, offs=4) -- 5325(line=190, offs=6)
 */
 ATSINSflab(__patsflab_max_regions_93):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4940(line=173, offs=3) -- 5324(line=189, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4941(line=174, offs=3) -- 5325(line=190, offs=6)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5274(line=185, offs=9) -- 5275(line=185, offs=10)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5275(line=186, offs=9) -- 5276(line=186, offs=10)
 */
 /*
 ATSINStmpdec(tmpref246) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5297(line=186, offs=14) -- 5307(line=186, offs=24)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5298(line=187, offs=14) -- 5308(line=187, offs=24)
 */
 ATSINSmove_void(tmp247, loop_94(arg0, ATSPMVi0nt(4), ATSPMVrefarg1(ATSPMVptrof(tmpref246)))) ;
 
@@ -6461,11 +6463,11 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5317(line=188, offs=5) -- 5318(line=188, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5318(line=189, offs=5) -- 5319(line=189, offs=6)
 */
 ATSINSmove(tmpret226, tmpref246) ;
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4940(line=173, offs=3) -- 5324(line=189, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4941(line=174, offs=3) -- 5325(line=190, offs=6)
 */
 /*
 INSletpop()
@@ -6475,7 +6477,7 @@
 } /* end of [max_regions_93] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4952(line=174, offs=9) -- 5260(line=183, offs=15)
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4953(line=175, offs=9) -- 5261(line=184, offs=15)
 */
 /*
 local: choose_62$0(level=0), loop_94$0(level=1)
@@ -6498,68 +6500,68 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4952(line=174, offs=9) -- 5260(line=183, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 4953(line=175, offs=9) -- 5261(line=184, offs=15)
 */
 ATSINSflab(__patsflab_loop_94):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5028(line=175, offs=10) -- 5033(line=175, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5029(line=176, offs=10) -- 5034(line=176, offs=15)
 */
 ATSINSmove(tmp228, ATSLIB_056_prelude__eq_g1int_int__95__1(arg0, ATSPMVi0nt(0))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5025(line=175, offs=7) -- 5260(line=183, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5026(line=176, offs=7) -- 5261(line=184, offs=15)
 */
 ATSif(
 tmp228
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5054(line=176, offs=16) -- 5067(line=176, offs=29)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5055(line=177, offs=16) -- 5068(line=177, offs=29)
 */
 ATSINSmove(tmp233, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__21(ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5047(line=176, offs=9) -- 5067(line=176, offs=29)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5048(line=177, offs=9) -- 5068(line=177, offs=29)
 */
 ATSINSstore(ATSderef(arg1, atstkind_type(atstype_ptrk)), tmp233) ;
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5047(line=176, offs=9) -- 5067(line=176, offs=29)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5048(line=177, offs=9) -- 5068(line=177, offs=29)
 */
 ATSINSmove_void(tmpret227, ATSPMVempty()) ;
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5087(line=178, offs=9) -- 5260(line=183, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5088(line=179, offs=9) -- 5261(line=184, offs=15)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5115(line=179, offs=25) -- 5120(line=179, offs=30)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5116(line=180, offs=25) -- 5121(line=180, offs=30)
 */
 ATSINSmove(tmp239, atspre_g1int_sub_int(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5110(line=179, offs=20) -- 5126(line=179, offs=36)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5111(line=180, offs=20) -- 5127(line=180, offs=36)
 */
 ATSINSmove_void(tmp238, loop_94(env0, tmp239, ATSPMVrefarg1(arg1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5141(line=180, offs=15) -- 5142(line=180, offs=16)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5142(line=181, offs=15) -- 5143(line=181, offs=16)
 */
 /*
 ATSINStmpdec(tmpref240) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5145(line=180, offs=19) -- 5157(line=180, offs=31)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5146(line=181, offs=19) -- 5158(line=181, offs=31)
 */
 ATSINSmove(tmpref240, choose_62(env0, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5184(line=181, offs=27) -- 5211(line=181, offs=54)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5185(line=182, offs=27) -- 5212(line=182, offs=54)
 */
 ATSINSmove(tmp241, ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6__4(ATSderef(arg1, atstkind_type(atstype_ptrk)), ATSPMVrefarg0(tmpref240))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5177(line=181, offs=20) -- 5211(line=181, offs=54)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5178(line=182, offs=20) -- 5212(line=182, offs=54)
 */
 ATSINSstore(ATSderef(arg1, atstkind_type(atstype_ptrk)), tmp241) ;
 /*
@@ -6567,12 +6569,12 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5231(line=182, offs=20) -- 5244(line=182, offs=33)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5232(line=183, offs=20) -- 5245(line=183, offs=33)
 */
 ATSINSmove_void(tmpret227, ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__6(tmpref240)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5087(line=178, offs=9) -- 5260(line=183, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5088(line=179, offs=9) -- 5261(line=184, offs=15)
 */
 /*
 INSletpop()
@@ -6878,7 +6880,7 @@
 } /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__6] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5347(line=191, offs=22) -- 5370(line=192, offs=15)
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5348(line=192, offs=22) -- 5371(line=193, offs=15)
 */
 /*
 local: choose_62$0(level=0)
@@ -6895,11 +6897,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5336(line=191, offs=11) -- 5370(line=192, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5337(line=192, offs=11) -- 5371(line=193, offs=15)
 */
 ATSINSflab(__patsflab_choose_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5358(line=192, offs=3) -- 5370(line=192, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5359(line=193, offs=3) -- 5371(line=193, offs=15)
 */
 ATSINSmove(tmpret248, choose_62(arg0, arg1)) ;
 
@@ -6908,7 +6910,7 @@
 } /* end of [choose_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5403(line=194, offs=32) -- 5418(line=195, offs=10)
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5404(line=195, offs=32) -- 5419(line=196, offs=10)
 */
 /*
 local: dfact_41$0(level=0)
@@ -6925,11 +6927,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5382(line=194, offs=11) -- 5419(line=195, offs=11)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5383(line=195, offs=11) -- 5420(line=196, offs=11)
 */
 ATSINSflab(__patsflab_double_factorial_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5411(line=195, offs=3) -- 5418(line=195, offs=10)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5412(line=196, offs=3) -- 5419(line=196, offs=10)
 */
 ATSINSmove(tmpret249, dfact_41(arg0)) ;
 
@@ -6938,7 +6940,7 @@
 } /* end of [double_factorial_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5445(line=197, offs=25) -- 5459(line=198, offs=9)
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5446(line=198, offs=25) -- 5460(line=199, offs=9)
 */
 /*
 local: fact_34$0(level=0)
@@ -6955,11 +6957,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5431(line=197, offs=11) -- 5460(line=198, offs=10)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5432(line=198, offs=11) -- 5461(line=199, offs=10)
 */
 ATSINSflab(__patsflab_factorial_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5453(line=198, offs=3) -- 5459(line=198, offs=9)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5454(line=199, offs=3) -- 5460(line=199, offs=9)
 */
 ATSINSmove(tmpret250, fact_34(arg0)) ;
 
@@ -6968,7 +6970,7 @@
 } /* end of [factorial_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5484(line=200, offs=23) -- 5501(line=201, offs=12)
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5485(line=201, offs=23) -- 5502(line=202, offs=12)
 */
 /*
 local: catalan_50$0(level=0)
@@ -6985,11 +6987,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5472(line=200, offs=11) -- 5502(line=201, offs=13)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5473(line=201, offs=11) -- 5503(line=202, offs=13)
 */
 ATSINSflab(__patsflab_catalan_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5492(line=201, offs=3) -- 5501(line=201, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5493(line=202, offs=3) -- 5502(line=202, offs=12)
 */
 ATSINSmove(tmpret251, catalan_50(arg0)) ;
 
@@ -6998,7 +7000,7 @@
 } /* end of [catalan_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5531(line=203, offs=28) -- 5553(line=204, offs=17)
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5532(line=204, offs=28) -- 5554(line=205, offs=17)
 */
 /*
 local: derangements_0$0(level=0)
@@ -7015,11 +7017,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5514(line=203, offs=11) -- 5554(line=204, offs=18)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5515(line=204, offs=11) -- 5555(line=205, offs=18)
 */
 ATSINSflab(__patsflab_derangements_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5539(line=204, offs=3) -- 5553(line=204, offs=17)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5540(line=205, offs=3) -- 5554(line=205, offs=17)
 */
 ATSINSmove(tmpret252, derangements_0(arg0)) ;
 
@@ -7028,7 +7030,7 @@
 } /* end of [derangements_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5583(line=206, offs=28) -- 5612(line=207, offs=21)
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5584(line=207, offs=28) -- 5613(line=208, offs=21)
 */
 /*
 local: permutations_42$0(level=0)
@@ -7045,11 +7047,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5566(line=206, offs=11) -- 5612(line=207, offs=21)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5567(line=207, offs=11) -- 5613(line=208, offs=21)
 */
 ATSINSflab(__patsflab_permutations_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5594(line=207, offs=3) -- 5612(line=207, offs=21)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5595(line=208, offs=3) -- 5613(line=208, offs=21)
 */
 ATSINSmove(tmpret253, permutations_42(arg0, arg1)) ;
 
@@ -7058,7 +7060,7 @@
 } /* end of [permutations_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5640(line=209, offs=27) -- 5661(line=210, offs=16)
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5641(line=210, offs=27) -- 5662(line=211, offs=16)
 */
 /*
 local: max_regions_93$0(level=0)
@@ -7075,11 +7077,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5624(line=209, offs=11) -- 5662(line=210, offs=17)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5625(line=210, offs=11) -- 5663(line=211, offs=17)
 */
 ATSINSflab(__patsflab_max_regions_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5648(line=210, offs=3) -- 5661(line=210, offs=16)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 5649(line=211, offs=3) -- 5662(line=211, offs=16)
 */
 ATSINSmove(tmpret254, max_regions_93(arg0)) ;
 
diff --git a/fast-arithmetic.cabal b/fast-arithmetic.cabal
--- a/fast-arithmetic.cabal
+++ b/fast-arithmetic.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: fast-arithmetic
-version: 0.6.2.2
+version: 0.6.2.3
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
