diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # language-ats
 
+## 1.7.4.1
+
+  * Improve pretty-printer
+
 ## 1.7.4.0
 
   * Add `languageATSVersion`
diff --git a/language-ats.cabal b/language-ats.cabal
--- a/language-ats.cabal
+++ b/language-ats.cabal
@@ -1,6 +1,6 @@
 cabal-version:   1.18
 name:            language-ats
-version:         1.7.4.0
+version:         1.7.4.1
 license:         BSD3
 license-file:    LICENSE
 copyright:       Copyright: (c) 2018-2019 Vanessa McHale
diff --git a/src/Language/ATS/PrettyPrint.hs b/src/Language/ATS/PrettyPrint.hs
--- a/src/Language/ATS/PrettyPrint.hs
+++ b/src/Language/ATS/PrettyPrint.hs
@@ -395,6 +395,11 @@
 isVal AndDecl{} = True
 isVal _         = False
 
+isOverload :: Declaration a -> Bool
+isOverload OverloadOp{} = True
+isOverload OverloadIdent{} = True
+isOverload _ = False
+
 -- isTypeDef :: Declaration a -> Bool
 -- isTypeDef ViewTypeDef{} = True
 -- isTypeDef TypeDef{} = True
@@ -405,10 +410,12 @@
 glue :: Declaration a -> Declaration a -> Bool
 glue x y
     | isVal x && isVal y = True
+    | isOverload x && isOverload y = True
 glue Stadef{} Stadef{}             = True
 glue Load{} Load{}                 = True
 glue Define{} Define{}             = True
 glue Include{} Include{}           = True
+glue FixityDecl{} FixityDecl{}     = True
 glue ViewTypeDef{} ViewTypeDef{}   = True
 glue AbsViewType{} AbsViewType{}   = True
 glue AbsType{} AbsType{}           = True
diff --git a/test/data/either.out b/test/data/either.out
--- a/test/data/either.out
+++ b/test/data/either.out
@@ -14,7 +14,6 @@
                                           ) : bool
 
 overload = with eq_either_either
-
 overload != with neq_either_either
 
 fun lefts {a:t@ype}{b:t@ype+}{n:int} (x : list(either(a,b), n)) :
diff --git a/test/data/finger-tree.out b/test/data/finger-tree.out
--- a/test/data/finger-tree.out
+++ b/test/data/finger-tree.out
@@ -18,7 +18,6 @@
 symintr <| |>
 
 infixr 5 <|
-
 infixl 5 |>
 
 fun lcons {a:t@ype+} (a, finger_tree(a)) : finger_tree(a)
@@ -26,5 +25,4 @@
 fun rcons {a:t@ype+} (finger_tree(a), a) : finger_tree(a)
 
 overload <| with lcons
-
 overload |> with rcons
diff --git a/test/data/gmp.out b/test/data/gmp.out
--- a/test/data/gmp.out
+++ b/test/data/gmp.out
@@ -226,13 +226,9 @@
 // x := y
 //
 overload mpz_init_set with mpz_init_set_mpz
-
 overload mpz_init_set with mpz_init_set_int
-
 overload mpz_init_set with mpz_init_set_uint
-
 overload mpz_init_set with mpz_init_set_lint
-
 overload mpz_init_set with mpz_init_set_ulint
 
 //
@@ -262,7 +258,6 @@
 
 //
 overload fprint with fprint_mpz
-
 overload fprint with fprint_mpz_base
 
 //
@@ -296,7 +291,6 @@
   "mac#%"
 
 overload mpz_neg with mpz_neg1
-
 overload mpz_neg with mpz_neg2
 
 //
@@ -316,7 +310,6 @@
   "mac#%"
 
 overload mpz_abs with mpz_abs1
-
 overload mpz_abs with mpz_abs2
 
 //
@@ -359,23 +352,14 @@
 
 //
 overload mpz_add with mpz_add2_mpz
-
 overload mpz_add with mpz_add2_int
-
 overload mpz_add with mpz_add2_lint
-
 overload mpz_add with mpz_add2_uint
-
 overload mpz_add with mpz_add2_ulint
-
 overload mpz_add with mpz_add3_mpz
-
 overload mpz_add with mpz_add3_int
-
 overload mpz_add with mpz_add3_lint
-
 overload mpz_add with mpz_add3_uint
-
 overload mpz_add with mpz_add3_ulint
 
 //
@@ -418,23 +402,14 @@
 
 //
 overload mpz_sub with mpz_sub2_mpz
-
 overload mpz_sub with mpz_sub2_int
-
 overload mpz_sub with mpz_sub2_lint
-
 overload mpz_sub with mpz_sub2_uint
-
 overload mpz_sub with mpz_sub2_ulint
-
 overload mpz_sub with mpz_sub3_mpz
-
 overload mpz_sub with mpz_sub3_int
-
 overload mpz_sub with mpz_sub3_lint
-
 overload mpz_sub with mpz_sub3_uint
-
 overload mpz_sub with mpz_sub3_ulint
 
 //
@@ -477,23 +452,14 @@
 
 //
 overload mpz_mul with mpz_mul2_mpz
-
 overload mpz_mul with mpz_mul2_int
-
 overload mpz_mul with mpz_mul2_lint
-
 overload mpz_mul with mpz_mul2_uint
-
 overload mpz_mul with mpz_mul2_ulint
-
 overload mpz_mul with mpz_mul3_mpz
-
 overload mpz_mul with mpz_mul3_int
-
 overload mpz_mul with mpz_mul3_lint
-
 overload mpz_mul with mpz_mul3_uint
-
 overload mpz_mul with mpz_mul3_ulint
 
 //
@@ -552,15 +518,10 @@
 
 //
 overload mpz_tdiv_q with mpz_tdiv2_q_mpz
-
 overload mpz_tdiv_q with mpz_tdiv2_q_uint
-
 overload mpz_tdiv_q with mpz_tdiv2_q_ulint
-
 overload mpz_tdiv_q with mpz_tdiv3_q_mpz
-
 overload mpz_tdiv_q with mpz_tdiv3_q_uint
-
 overload mpz_tdiv_q with mpz_tdiv3_q_ulint
 
 //
@@ -589,15 +550,10 @@
 
 //
 overload mpz_tdiv_r with mpz_tdiv2_r_mpz
-
 overload mpz_tdiv_r with mpz_tdiv2_r_uint
-
 overload mpz_tdiv_r with mpz_tdiv2_r_ulint
-
 overload mpz_tdiv_r with mpz_tdiv3_r_mpz
-
 overload mpz_tdiv_r with mpz_tdiv3_r_uint
-
 overload mpz_tdiv_r with mpz_tdiv3_r_ulint
 
 //
@@ -639,15 +595,10 @@
 
 //
 overload mpz_tdiv_qr with mpz_tdiv3_qr_mpz
-
 overload mpz_tdiv_qr with mpz_tdiv3_qr_uint
-
 overload mpz_tdiv_qr with mpz_tdiv3_qr_ulint
-
 overload mpz_tdiv_qr with mpz_tdiv4_qr_mpz
-
 overload mpz_tdiv_qr with mpz_tdiv4_qr_uint
-
 overload mpz_tdiv_qr with mpz_tdiv4_qr_ulint
 
 //
@@ -666,7 +617,6 @@
 
 //
 overload mpz_fdiv with mpz_fdiv_uint
-
 overload mpz_fdiv with mpz_fdiv_ulint
 
 //
@@ -689,11 +639,8 @@
 
 //
 overload mpz_fdiv_q with mpz_fdiv2_q_uint
-
 overload mpz_fdiv_q with mpz_fdiv2_q_ulint
-
 overload mpz_fdiv_q with mpz_fdiv3_q_uint
-
 overload mpz_fdiv_q with mpz_fdiv3_q_ulint
 
 //
@@ -731,7 +678,6 @@
 
 //
 overload mpz_fdiv_qr with mpz_fdiv4_qr_mpz
-
 overload mpz_fdiv_qr with mpz_fdiv4_qr_ulint
 
 //
@@ -750,7 +696,6 @@
 
 //
 overload mpz_cdiv with mpz_cdiv_uint
-
 overload mpz_cdiv with mpz_cdiv_ulint
 
 //
@@ -773,11 +718,8 @@
 
 //
 overload mpz_cdiv_q with mpz_cdiv2_q_uint
-
 overload mpz_cdiv_q with mpz_cdiv2_q_ulint
-
 overload mpz_cdiv_q with mpz_cdiv3_q_uint
-
 overload mpz_cdiv_q with mpz_cdiv3_q_ulint
 
 //
@@ -811,15 +753,10 @@
 
 //
 overload mpz_mod with mpz_mod2_mpz
-
 overload mpz_mod with mpz_mod2_uint
-
 overload mpz_mod with mpz_mod2_ulint
-
 overload mpz_mod with mpz_mod3_mpz
-
 overload mpz_mod with mpz_mod3_uint
-
 overload mpz_mod with mpz_mod3_ulint
 
 //
@@ -842,9 +779,7 @@
 
 //
 overload mpz_addmul with mpz_addmul3_mpz
-
 overload mpz_addmul with mpz_addmul3_uint
-
 overload mpz_addmul with mpz_addmul3_ulint
 
 //
@@ -865,9 +800,7 @@
 
 //
 overload mpz_submul with mpz_submul3_mpz
-
 overload mpz_submul with mpz_submul3_uint
-
 overload mpz_submul with mpz_submul3_ulint
 
 //
@@ -895,13 +828,9 @@
 
 //
 overload mpz_cmp with mpz_cmp_mpz
-
 overload mpz_cmp with mpz_cmp_int
-
 overload mpz_cmp with mpz_cmp_uint
-
 overload mpz_cmp with mpz_cmp_lint
-
 overload mpz_cmp with mpz_cmp_ulint
 
 //
@@ -928,7 +857,6 @@
 
 //
 overload mpz_pow with mpz_cmp_uint
-
 overload mpz_pow with mpz_cmp_ulint
 
 //
@@ -947,7 +875,6 @@
 
 //
 overload mpz_fib with mpz_fib_uint
-
 overload mpz_fib2 with mpz_fib2_uint
 
 //
diff --git a/test/data/stdlib/array.out b/test/data/stdlib/array.out
--- a/test/data/stdlib/array.out
+++ b/test/data/stdlib/array.out
@@ -158,14 +158,12 @@
 
 //
 overload [] with array_get_at_gint of 0
-
 overload [] with array_get_at_guint of 0
 
 //
 symintr array_get_at
 
 overload array_get_at with array_get_at_gint of 0
-
 overload array_get_at with array_get_at_guint of 0
 
 //
@@ -184,14 +182,12 @@
 
 //
 overload [] with array_set_at_gint of 0
-
 overload [] with array_set_at_guint of 0
 
 //
 symintr array_set_at
 
 overload array_set_at with array_set_at_gint of 0
-
 overload array_set_at with array_set_at_guint of 0
 
 //
@@ -209,7 +205,6 @@
 symintr array_exch_at
 
 overload array_exch_at with array_exch_at_gint of 0
-
 overload array_exch_at with array_exch_at_guint of 0
 
 (* ****** ****** *)
@@ -272,7 +267,6 @@
 symintr fprint_array
 
 overload fprint_array with fprint_array_int
-
 overload fprint_array with fprint_array_size
 
 //
@@ -286,7 +280,6 @@
 //
 (* ****** ****** *)
 overload fprint with fprint_array
-
 overload fprint with fprint_array_sep
 
 (* ****** ****** *)
diff --git a/test/data/stdlib/arrayref.out b/test/data/stdlib/arrayref.out
--- a/test/data/stdlib/arrayref.out
+++ b/test/data/stdlib/arrayref.out
@@ -158,7 +158,6 @@
 
 //
 overload arrayref_get_at with arrayref_get_at_gint of 0
-
 overload arrayref_get_at with arrayref_get_at_guint of 0
 
 //
@@ -178,7 +177,6 @@
 
 //
 overload arrayref_set_at with arrayref_set_at_gint of 0
-
 overload arrayref_set_at with arrayref_set_at_guint of 0
 
 //
@@ -196,7 +194,6 @@
 
 //
 overload arrayref_exch_at with arrayref_exch_at_gint of 0
-
 overload arrayref_exch_at with arrayref_exch_at_guint of 0
 
 //
@@ -435,7 +432,6 @@
 symintr arrszref_get_at
 
 overload arrszref_get_at with arrszref_get_at_gint of 0
-
 overload arrszref_get_at with arrszref_get_at_guint of 0
 
 //
@@ -461,7 +457,6 @@
 
 //
 overload arrszref_set_at with arrszref_set_at_gint of 0
-
 overload arrszref_set_at with arrszref_set_at_guint of 0
 
 //
@@ -491,7 +486,6 @@
 
 //
 overload arrszref_exch_at with arrszref_exch_at_gint of 0
-
 overload arrszref_exch_at with arrszref_exch_at_guint of 0
 
 (* ****** ****** *)
@@ -541,40 +535,29 @@
 (* ****** ****** *)
 //
 overload [] with arrayref_get_at_gint of 0
-
 overload [] with arrayref_set_at_gint of 0
-
 overload [] with arrszref_get_at_gint of 0
-
 overload [] with arrszref_set_at_gint of 0
 
 //
 overload [] with arrayref_get_at_guint of 0
-
 overload [] with arrayref_set_at_guint of 0
-
 overload [] with arrszref_get_at_guint of 0
-
 overload [] with arrszref_set_at_guint of 0
 
 //
 (* ****** ****** *)
 overload .head with arrayref_head
-
 overload .tail with arrayref_tail
 
 (* ****** ****** *)
 overload size with arrszref_get_size
-
 overload .size with arrszref_get_size
 
 (* ****** ****** *)
 overload fprint with fprint_arrayref
-
 overload fprint with fprint_arrayref_sep
-
 overload fprint with fprint_arrszref
-
 overload fprint with fprint_arrszref_sep
 
 (* ****** ****** *)
diff --git a/test/data/stdlib/basics_dyn.out b/test/data/stdlib/basics_dyn.out
--- a/test/data/stdlib/basics_dyn.out
+++ b/test/data/stdlib/basics_dyn.out
@@ -239,7 +239,6 @@
 
 //
 overload ~ with lazy_vt_free of 0
-
 overload free with lazy_vt_free of 0
 
 //
@@ -327,7 +326,6 @@
 
 //
 overload decode with vcopyenv_v_decode
-
 overload decode with vcopyenv_vt_decode
 
 //
@@ -638,7 +636,6 @@
 
 //
 overload [] with argv_get_at
-
 overload [] with argv_set_at
 
 //
@@ -663,7 +660,6 @@
 
 //
 overload main0 with main_void_0
-
 overload main0 with main_argc_argv_0
 
 //
@@ -688,9 +684,7 @@
 
 //
 overload main with main_void_int
-
 overload main with main_argc_argv_int
-
 overload main with main_argc_argv_envp_int
 
 //
@@ -729,7 +723,6 @@
 
 //
 overload assert with assert_bool0 of 0
-
 overload assert with assert_bool1 of 10
 
 //
@@ -743,7 +736,6 @@
 symintr assertexn
 
 overload assertexn with assertexn_bool0 of 0
-
 overload assertexn with assertexn_bool1 of 10
 
 //
@@ -760,7 +752,6 @@
 symintr assert_errmsg
 
 overload assert_errmsg with assert_errmsg_bool0 of 0
-
 overload assert_errmsg with assert_errmsg_bool1 of 10
 
 //
@@ -780,7 +771,6 @@
 symintr assert_errmsg2
 
 overload assert_errmsg2 with assert_errmsg2_bool0 of 0
-
 overload assert_errmsg2 with assert_errmsg2_bool1 of 10
 
 //
diff --git a/test/data/stdlib/basics_gen.out b/test/data/stdlib/basics_gen.out
--- a/test/data/stdlib/basics_gen.out
+++ b/test/data/stdlib/basics_gen.out
@@ -133,9 +133,7 @@
 *)
 //
 overload print with print_stamped_t
-
 overload prerr with prerr_stamped_t
-
 overload fprint with fprint_stamped_t
 
 //
diff --git a/test/data/stdlib/filebas.out b/test/data/stdlib/filebas.out
--- a/test/data/stdlib/filebas.out
+++ b/test/data/stdlib/filebas.out
@@ -182,7 +182,6 @@
 symintr fileref_putc
 
 overload fileref_putc with fileref_putc_int
-
 overload fileref_putc with fileref_putc_char
 
 //
diff --git a/test/data/stdlib/integer_fixed.out b/test/data/stdlib/integer_fixed.out
--- a/test/data/stdlib/integer_fixed.out
+++ b/test/data/stdlib/integer_fixed.out
@@ -410,9 +410,7 @@
   "mac#%"
 
 overload print with print_int8
-
 overload prerr with prerr_int8
-
 overload fprint with fprint_int8
 
 fun print_int16(int16) : void =
@@ -425,9 +423,7 @@
   "mac#%"
 
 overload print with print_int16
-
 overload prerr with prerr_int16
-
 overload fprint with fprint_int16
 
 fun print_int32(int32) : void =
@@ -440,9 +436,7 @@
   "mac#%"
 
 overload print with print_int32
-
 overload prerr with prerr_int32
-
 overload fprint with fprint_int32
 
 fun print_int64(int64) : void =
@@ -455,9 +449,7 @@
   "mac#%"
 
 overload print with print_int64
-
 overload prerr with prerr_int64
-
 overload fprint with fprint_int64
 
 (* ****** ****** *)
@@ -830,9 +822,7 @@
   "mac#%"
 
 overload print with print_uint8
-
 overload prerr with prerr_uint8
-
 overload fprint with fprint_uint8
 
 fun print_uint16(uint16) : void =
@@ -845,9 +835,7 @@
   "mac#%"
 
 overload print with print_uint16
-
 overload prerr with prerr_uint16
-
 overload fprint with fprint_uint16
 
 fun print_uint32(uint32) : void =
@@ -860,9 +848,7 @@
   "mac#%"
 
 overload print with print_uint32
-
 overload prerr with prerr_uint32
-
 overload fprint with fprint_uint32
 
 fun print_uint64(uint64) : void =
@@ -875,9 +861,7 @@
   "mac#%"
 
 overload print with print_uint64
-
 overload prerr with prerr_uint64
-
 overload fprint with fprint_uint64
 
 (* ****** ****** *)
diff --git a/test/data/stdlib/integer_long.out b/test/data/stdlib/integer_long.out
--- a/test/data/stdlib/integer_long.out
+++ b/test/data/stdlib/integer_long.out
@@ -210,9 +210,7 @@
   "mac#%"
 
 overload print with print_lint
-
 overload prerr with prerr_lint
-
 overload fprint with fprint_lint
 
 //
@@ -226,9 +224,7 @@
   "mac#%"
 
 overload print with print_ulint
-
 overload prerr with prerr_ulint
-
 overload fprint with fprint_ulint
 
 //
@@ -242,9 +238,7 @@
   "mac#%"
 
 overload print with print_llint
-
 overload prerr with prerr_llint
-
 overload fprint with fprint_llint
 
 //
@@ -258,9 +252,7 @@
   "mac#%"
 
 overload print with print_ullint
-
 overload prerr with prerr_ullint
-
 overload fprint with fprint_ullint
 
 //
diff --git a/test/data/stdlib/integer_ptr.out b/test/data/stdlib/integer_ptr.out
--- a/test/data/stdlib/integer_ptr.out
+++ b/test/data/stdlib/integer_ptr.out
@@ -188,9 +188,7 @@
   "mac#%"
 
 overload print with print_intptr
-
 overload prerr with prerr_intptr
-
 overload fprint with fprint_intptr
 
 //
@@ -287,9 +285,7 @@
   "mac#%"
 
 overload print with print_uintptr
-
 overload prerr with prerr_uintptr
-
 overload fprint with fprint_uintptr
 
 //
diff --git a/test/data/stdlib/integer_short.out b/test/data/stdlib/integer_short.out
--- a/test/data/stdlib/integer_short.out
+++ b/test/data/stdlib/integer_short.out
@@ -95,9 +95,7 @@
   "mac#%"
 
 overload print with print_sint
-
 overload prerr with prerr_sint
-
 overload fprint with fprint_sint
 
 fun print_usint(usint) : void =
@@ -110,9 +108,7 @@
   "mac#%"
 
 overload print with print_usint
-
 overload prerr with prerr_usint
-
 overload fprint with fprint_usint
 
 //
diff --git a/test/data/stdlib/integer_size.out b/test/data/stdlib/integer_size.out
--- a/test/data/stdlib/integer_size.out
+++ b/test/data/stdlib/integer_size.out
@@ -162,9 +162,7 @@
   "mac#%"
 
 overload print with print_size
-
 overload prerr with prerr_size
-
 overload fprint with fprint_size
 
 //
@@ -178,9 +176,7 @@
   "mac#%"
 
 overload print with print_ssize
-
 overload prerr with prerr_ssize
-
 overload fprint with fprint_ssize
 
 //
@@ -554,14 +550,12 @@
 symintr sz2i
 
 overload sz2i with g0uint2int_size_int of 0
-
 overload sz2i with g1uint2int_size_int of 10
 
 //
 symintr sz2u
 
 overload sz2u with g0uint2uint_size_uint of 0
-
 overload sz2u with g1uint2uint_size_uint of 10
 
 //
diff --git a/test/data/stdlib/option_vt.out b/test/data/stdlib/option_vt.out
--- a/test/data/stdlib/option_vt.out
+++ b/test/data/stdlib/option_vt.out
@@ -99,7 +99,6 @@
 //
 (* ****** ****** *)
 overload iseqz with option_vt_is_none
-
 overload isneqz with option_vt_is_some
 
 (* ****** ****** *)
diff --git a/test/data/stdlib/unsafe.out b/test/data/stdlib/unsafe.out
--- a/test/data/stdlib/unsafe.out
+++ b/test/data/stdlib/unsafe.out
@@ -176,7 +176,6 @@
 
 //
 overload ptr_vtake with ptr0_vtake of 0
-
 overload ptr_vtake with ptr1_vtake of 10
 
 //
@@ -246,11 +245,8 @@
 
 //
 overload ptr0_get_at with ptr0_get_at_int
-
 overload ptr0_set_at with ptr0_set_at_int
-
 overload ptr0_get_at with ptr0_get_at_size
-
 overload ptr0_set_at with ptr0_set_at_size
 
 //
