diff --git a/atspkg.dhall b/atspkg.dhall
--- a/atspkg.dhall
+++ b/atspkg.dhall
@@ -1,4 +1,4 @@
-let pkg = https://raw.githubusercontent.com/vmchale/atspkg/master/pkgs/default.dhall
+let pkg = https://raw.githubusercontent.com/vmchale/atspkg/master/dhall/default.dhall
 
 in pkg //
   { compiler = [0,3,8]
diff --git a/cbits/combinatorics.c b/cbits/combinatorics.c
--- a/cbits/combinatorics.c
+++ b/cbits/combinatorics.c
@@ -1,7 +1,7 @@
 /*
 **
 ** The C code is generated by [ATS/Postiats-0-3-8]
-** The starting compilation time is: 2018-2-7:  3h:28m
+** The starting compilation time is: 2018-2-23:  4h: 2m
 **
 */
 
@@ -311,7 +311,7 @@
 staload-prologues(end)
 */
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 86(line=4, offs=1) -- 225(line=8, offs=3)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 86(line=4, offs=1) -- 225(line=8, offs=3)
 */
 ATSextcode_beg()
 #define ATS_MEMALLOC_LIBC
@@ -4905,7 +4905,7 @@
 } /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__4] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 660(line=32, offs=22) -- 683(line=33, offs=15)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 660(line=32, offs=22) -- 683(line=33, offs=15)
 */
 /*
 local: choose_55$0(level=0)
@@ -4922,11 +4922,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 649(line=32, offs=11) -- 683(line=33, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 649(line=32, offs=11) -- 683(line=33, offs=15)
 */
 ATSINSflab(__patsflab_choose_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 671(line=33, offs=3) -- 683(line=33, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 671(line=33, offs=3) -- 683(line=33, offs=15)
 */
 ATSINSmove(tmpret161, choose_55(arg0, arg1)) ;
 
@@ -4935,7 +4935,7 @@
 } /* end of [choose_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 712(line=35, offs=28) -- 735(line=36, offs=15)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 712(line=35, offs=28) -- 735(line=36, offs=15)
 */
 /*
 local: choose_55$0(level=0)
@@ -4952,11 +4952,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 695(line=35, offs=11) -- 735(line=36, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 695(line=35, offs=11) -- 735(line=36, offs=15)
 */
 ATSINSflab(__patsflab_permutations_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 723(line=36, offs=3) -- 735(line=36, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 723(line=36, offs=3) -- 735(line=36, offs=15)
 */
 ATSINSmove(tmpret162, choose_55(arg0, arg1)) ;
 
@@ -4965,7 +4965,7 @@
 } /* end of [permutations_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 768(line=38, offs=32) -- 783(line=39, offs=10)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 768(line=38, offs=32) -- 783(line=39, offs=10)
 */
 /*
 local: dfact_34$0(level=0)
@@ -4982,11 +4982,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 747(line=38, offs=11) -- 784(line=39, offs=11)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 747(line=38, offs=11) -- 784(line=39, offs=11)
 */
 ATSINSflab(__patsflab_double_factorial_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 776(line=39, offs=3) -- 783(line=39, offs=10)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 776(line=39, offs=3) -- 783(line=39, offs=10)
 */
 ATSINSmove(tmpret163, dfact_34(arg0)) ;
 
@@ -4995,7 +4995,7 @@
 } /* end of [double_factorial_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 810(line=41, offs=25) -- 824(line=42, offs=9)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 810(line=41, offs=25) -- 824(line=42, offs=9)
 */
 /*
 local: fact_28$0(level=0)
@@ -5012,11 +5012,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 796(line=41, offs=11) -- 825(line=42, offs=10)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 796(line=41, offs=11) -- 825(line=42, offs=10)
 */
 ATSINSflab(__patsflab_factorial_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 818(line=42, offs=3) -- 824(line=42, offs=9)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 818(line=42, offs=3) -- 824(line=42, offs=9)
 */
 ATSINSmove(tmpret164, fact_28(arg0)) ;
 
@@ -5025,7 +5025,7 @@
 } /* end of [factorial_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 849(line=44, offs=23) -- 866(line=45, offs=12)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 849(line=44, offs=23) -- 866(line=45, offs=12)
 */
 /*
 local: catalan_44$0(level=0)
@@ -5042,11 +5042,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 837(line=44, offs=11) -- 867(line=45, offs=13)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 837(line=44, offs=11) -- 867(line=45, offs=13)
 */
 ATSINSflab(__patsflab_catalan_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 857(line=45, offs=3) -- 866(line=45, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/combinatorics.dats: 857(line=45, offs=3) -- 866(line=45, offs=12)
 */
 ATSINSmove(tmpret165, catalan_44(arg0)) ;
 
@@ -5057,22 +5057,22 @@
 /*
 ** for initialization(dynloading)
 */
-ATSdynloadflag_minit(_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_combinatorics_056_dats__dynloadflag) ;
+ATSdynloadflag_minit(_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_combinatorics_056_dats__dynloadflag) ;
 ATSextern()
 atsvoid_t0ype
-_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_combinatorics_056_dats__dynload()
+_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_combinatorics_056_dats__dynload()
 {
 ATSfunbody_beg()
 ATSdynload(/*void*/)
 ATSdynloadflag_sta(
-_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_combinatorics_056_dats__dynloadflag
+_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_combinatorics_056_dats__dynloadflag
 ) ;
 ATSif(
 ATSCKiseqz(
-_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_combinatorics_056_dats__dynloadflag
+_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_combinatorics_056_dats__dynloadflag
 )
 ) ATSthen() {
-ATSdynloadset(_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_combinatorics_056_dats__dynloadflag) ;
+ATSdynloadset(_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_combinatorics_056_dats__dynloadflag) ;
 /*
 dynexnlst-initize(beg)
 */
diff --git a/cbits/number-theory.c b/cbits/number-theory.c
--- a/cbits/number-theory.c
+++ b/cbits/number-theory.c
@@ -1,7 +1,7 @@
 /*
 **
 ** The C code is generated by [ATS/Postiats-0-3-8]
-** The starting compilation time is: 2018-2-7:  3h:28m
+** The starting compilation time is: 2018-2-23:  4h: 2m
 **
 */
 
@@ -9164,7 +9164,7 @@
 } /* end of [ATSLIB_056_prelude__ptr_alloc__2__2] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 558(line=30, offs=28) -- 580(line=31, offs=17)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 558(line=30, offs=28) -- 580(line=31, offs=17)
 */
 /*
 local: sum_divisors_86$0(level=0)
@@ -9181,11 +9181,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 541(line=30, offs=11) -- 581(line=31, offs=18)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 541(line=30, offs=11) -- 581(line=31, offs=18)
 */
 ATSINSflab(__patsflab_sum_divisors_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 566(line=31, offs=3) -- 580(line=31, offs=17)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 566(line=31, offs=3) -- 580(line=31, offs=17)
 */
 ATSINSmove(tmpret339, sum_divisors_86(arg0)) ;
 
@@ -9194,7 +9194,7 @@
 } /* end of [sum_divisors_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 612(line=33, offs=30) -- 636(line=34, offs=19)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 612(line=33, offs=30) -- 636(line=34, offs=19)
 */
 /*
 local: count_divisors_81$0(level=0)
@@ -9211,11 +9211,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 593(line=33, offs=11) -- 637(line=34, offs=20)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 593(line=33, offs=11) -- 637(line=34, offs=20)
 */
 ATSINSflab(__patsflab_count_divisors_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 620(line=34, offs=3) -- 636(line=34, offs=19)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 620(line=34, offs=3) -- 636(line=34, offs=19)
 */
 ATSINSmove(tmpret340, count_divisors_81(arg0)) ;
 
@@ -9224,7 +9224,7 @@
 } /* end of [count_divisors_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 661(line=36, offs=23) -- 678(line=37, offs=12)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 661(line=36, offs=23) -- 678(line=37, offs=12)
 */
 /*
 local: totient_117$0(level=0)
@@ -9241,11 +9241,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 649(line=36, offs=11) -- 679(line=37, offs=13)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 649(line=36, offs=11) -- 679(line=37, offs=13)
 */
 ATSINSflab(__patsflab_totient_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 669(line=37, offs=3) -- 678(line=37, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 669(line=37, offs=3) -- 678(line=37, offs=12)
 */
 ATSINSmove(tmpret341, totient_117(arg0)) ;
 
@@ -9254,7 +9254,7 @@
 } /* end of [totient_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 708(line=39, offs=28) -- 730(line=40, offs=17)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 708(line=39, offs=28) -- 730(line=40, offs=17)
 */
 /*
 local: little_omega_112$0(level=0)
@@ -9271,11 +9271,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 691(line=39, offs=11) -- 731(line=40, offs=18)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 691(line=39, offs=11) -- 731(line=40, offs=18)
 */
 ATSINSflab(__patsflab_little_omega_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 716(line=40, offs=3) -- 730(line=40, offs=17)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 716(line=40, offs=3) -- 730(line=40, offs=17)
 */
 ATSINSmove(tmpret342, little_omega_112(arg0)) ;
 
@@ -9284,7 +9284,7 @@
 } /* end of [little_omega_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 758(line=42, offs=26) -- 778(line=43, offs=15)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 758(line=42, offs=26) -- 778(line=43, offs=15)
 */
 /*
 local: is_perfect_93$0(level=0)
@@ -9301,11 +9301,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 743(line=42, offs=11) -- 779(line=43, offs=16)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 743(line=42, offs=11) -- 779(line=43, offs=16)
 */
 ATSINSflab(__patsflab_is_perfect_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 766(line=43, offs=3) -- 778(line=43, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 766(line=43, offs=3) -- 778(line=43, offs=15)
 */
 ATSINSmove(tmpret343, is_perfect_93(arg0)) ;
 
@@ -9314,7 +9314,7 @@
 } /* end of [is_perfect_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 802(line=45, offs=22) -- 835(line=46, offs=25)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 802(line=45, offs=22) -- 835(line=46, offs=25)
 */
 /*
 local: jacobi_72$0(level=0)
@@ -9331,11 +9331,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 791(line=45, offs=11) -- 835(line=46, offs=25)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 791(line=45, offs=11) -- 835(line=46, offs=25)
 */
 ATSINSflab(__patsflab_jacobi_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 813(line=46, offs=3) -- 835(line=46, offs=25)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/number-theory.dats: 813(line=46, offs=3) -- 835(line=46, offs=25)
 */
 ATSINSmove(tmpret344, jacobi_72(arg0, ATSPMVcastfn(cast, atstkind_t0ype(atstype_int), arg1))) ;
 
@@ -9346,22 +9346,22 @@
 /*
 ** for initialization(dynloading)
 */
-ATSdynloadflag_minit(_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_number_055_theory_056_dats__dynloadflag) ;
+ATSdynloadflag_minit(_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_number_055_theory_056_dats__dynloadflag) ;
 ATSextern()
 atsvoid_t0ype
-_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_number_055_theory_056_dats__dynload()
+_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_number_055_theory_056_dats__dynload()
 {
 ATSfunbody_beg()
 ATSdynload(/*void*/)
 ATSdynloadflag_sta(
-_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_number_055_theory_056_dats__dynloadflag
+_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_number_055_theory_056_dats__dynloadflag
 ) ;
 ATSif(
 ATSCKiseqz(
-_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_number_055_theory_056_dats__dynloadflag
+_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_number_055_theory_056_dats__dynloadflag
 )
 ) ATSthen() {
-ATSdynloadset(_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_number_055_theory_056_dats__dynloadflag) ;
+ATSdynloadset(_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_number_055_theory_056_dats__dynloadflag) ;
 /*
 dynexnlst-initize(beg)
 */
diff --git a/cbits/numerics.c b/cbits/numerics.c
--- a/cbits/numerics.c
+++ b/cbits/numerics.c
@@ -1,7 +1,7 @@
 /*
 **
 ** The C code is generated by [ATS/Postiats-0-3-8]
-** The starting compilation time is: 2018-2-7:  3h:28m
+** The starting compilation time is: 2018-2-23:  4h: 2m
 **
 */
 
@@ -1685,7 +1685,7 @@
 } /* end of [ATSLIB_056_prelude__eq_g0int_int__12__3] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 440(line=21, offs=24) -- 458(line=22, offs=13)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/numerics.dats: 440(line=21, offs=24) -- 458(line=22, offs=13)
 */
 /*
 local: is_prime_20$0(level=0)
@@ -1702,11 +1702,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 427(line=21, offs=11) -- 459(line=22, offs=14)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/numerics.dats: 427(line=21, offs=11) -- 459(line=22, offs=14)
 */
 ATSINSflab(__patsflab_is_prime_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 448(line=22, offs=3) -- 458(line=22, offs=13)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/numerics.dats: 448(line=22, offs=3) -- 458(line=22, offs=13)
 */
 ATSINSmove(tmpret52, is_prime_20(arg0)) ;
 
@@ -1715,7 +1715,7 @@
 } /* end of [is_prime_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 479(line=24, offs=19) -- 499(line=25, offs=12)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/numerics.dats: 479(line=24, offs=19) -- 499(line=25, offs=12)
 */
 /*
 local: exp_5$0(level=0)
@@ -1732,11 +1732,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 471(line=24, offs=11) -- 499(line=25, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/numerics.dats: 471(line=24, offs=11) -- 499(line=25, offs=12)
 */
 ATSINSflab(__patsflab_exp_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 490(line=25, offs=3) -- 499(line=25, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/numerics.dats: 490(line=25, offs=3) -- 499(line=25, offs=12)
 */
 ATSINSmove(tmpret53, exp_5(arg0, arg1)) ;
 
@@ -1745,7 +1745,7 @@
 } /* end of [exp_ats] */
 
 /*
-/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 519(line=27, offs=19) -- 536(line=28, offs=12)
+/home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/numerics.dats: 519(line=27, offs=19) -- 536(line=28, offs=12)
 */
 /*
 local: fib_gmp_1$0(level=0)
@@ -1762,11 +1762,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 511(line=27, offs=11) -- 537(line=28, offs=13)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/numerics.dats: 511(line=27, offs=11) -- 537(line=28, offs=13)
 */
 ATSINSflab(__patsflab_fib_ats):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 527(line=28, offs=3) -- 536(line=28, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/junkyard/fast-arithmetic-0.3.2.5/ats-src/numerics.dats: 527(line=28, offs=3) -- 536(line=28, offs=12)
 */
 ATSINSmove(tmpret54, fib_gmp_1(arg0)) ;
 
@@ -1777,22 +1777,22 @@
 /*
 ** for initialization(dynloading)
 */
-ATSdynloadflag_minit(_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_numerics_056_dats__dynloadflag) ;
+ATSdynloadflag_minit(_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_numerics_056_dats__dynloadflag) ;
 ATSextern()
 atsvoid_t0ype
-_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_numerics_056_dats__dynload()
+_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_numerics_056_dats__dynload()
 {
 ATSfunbody_beg()
 ATSdynload(/*void*/)
 ATSdynloadflag_sta(
-_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_numerics_056_dats__dynloadflag
+_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_numerics_056_dats__dynloadflag
 ) ;
 ATSif(
 ATSCKiseqz(
-_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_numerics_056_dats__dynloadflag
+_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_numerics_056_dats__dynloadflag
 )
 ) ATSthen() {
-ATSdynloadset(_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_numerics_056_dats__dynloadflag) ;
+ATSdynloadset(_057_home_057_vanessa_057_programming_057_haskell_057_junkyard_057_fast_055_arithmetic_055_0_056_3_056_2_056_5_057_ats_055_src_057_numerics_056_dats__dynloadflag) ;
 /*
 dynexnlst-initize(beg)
 */
diff --git a/fast-arithmetic.cabal b/fast-arithmetic.cabal
--- a/fast-arithmetic.cabal
+++ b/fast-arithmetic.cabal
@@ -1,5 +1,5 @@
 name:                fast-arithmetic
-version:             0.3.2.5
+version:             0.3.2.6
 synopsis:            Fast functions on integers.
 description:         Fast functions for number theory and combinatorics with a high level of safety guaranteed by [ATS](http://www.ats-lang.org/). This package also provides a
                      'Storable' instance for GMP's @mpz@ type.
@@ -25,9 +25,8 @@
 }
 
 custom-setup
-  -- ghc-options:     -threaded -rtsopts -with-rtsopts=-N
   setup-depends:   base
-                 , ats-setup >= 0.1.0.2
+                 , ats-setup >= 0.4.0.2
                  , Cabal
 
 library
diff --git a/src/Numeric/Combinatorics.hs b/src/Numeric/Combinatorics.hs
--- a/src/Numeric/Combinatorics.hs
+++ b/src/Numeric/Combinatorics.hs
@@ -13,6 +13,7 @@
                              ) where
 
 import           Control.Composition
+import           Control.Monad
 import           Data.GMP
 import           Foreign.C
 import           Foreign.Ptr
