diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,131 @@
+# Builds and tests this Haskell project on "GitHub Actions"
+#
+# 2021  Rudy Matela
+#
+# some docs: https://github.com/haskell/actions/tree/main/setup
+name: build
+on: [push]
+jobs:
+  build-and-test:
+    runs-on: ubuntu-latest
+    steps:
+
+      - name: Cache ~/.cabal/packages
+        uses: actions/cache@v2
+        with:
+          path: ~/.cabal/packages
+          key:          v1-${{ runner.os }}-cabal-packages-${{ hashFiles('hello.cabal') }}
+          restore-keys: v1-${{ runner.os }}-cabal-packages-
+
+      - name: Cache ~/.cabal and ~/.ghc
+        uses: actions/cache@v2
+        with:
+          path: |
+            ~/.cabal
+            !~/.cabal/packages
+            ~/.ghc
+          key:          v1-${{ runner.os }}-cabal-ghc-latest-${{ hashFiles('hello.cabal') }}
+          restore-keys: v1-${{ runner.os }}-cabal-ghc-latest-
+
+      - run: du -hd3 ~/.cabal ~/.ghc || true
+
+      - run: haddock --version || sudo apt-get install ghc-haddock
+      - run: ghc   --version
+      - run: cabal --version
+
+      - name: Check out repository
+        uses: actions/checkout@v2
+
+      - run: cabal update
+      - run: make install-dependencies
+
+      - run: make
+      - run: make test
+      - run: make haddock
+      - run: make test-sdist
+      - run: make test-via-cabal
+
+
+  test-with-ghc:
+    strategy:
+      matrix:
+        ghc:
+          - '9.0'
+          - '8.10'
+          - '8.8'
+          - '8.6'
+          - '8.4'
+          - '8.2'
+          - '8.0'
+          - '7.10'
+          - '7.8'
+    runs-on: ubuntu-latest
+    needs: build-and-test
+    container: haskell:${{ matrix.ghc }}
+    steps:
+      - name: Cache ~/.cabal/packages
+        uses: actions/cache@v2
+        with:
+          path: ~/.cabal/packages
+          key:          v1-${{ runner.os }}-cabal-packages-${{ hashFiles('hello.cabal') }}
+          restore-keys: v1-${{ runner.os }}-cabal-packages-
+
+      - name: Cache ~/.cabal and ~/.ghc
+        uses: actions/cache@v2
+        with:
+          path: |
+            ~/.cabal
+            !~/.cabal/packages
+            ~/.ghc
+          key:          v1-${{ runner.os }}-cabal-ghc-${{ matrix.ghc }}-${{ hashFiles('hello.cabal') }}
+          restore-keys: v1-${{ runner.os }}-cabal-ghc-${{ matrix.ghc }}-
+
+      - run: du -hd3 ~/.cabal ~/.ghc || true
+
+      - run: make --version || rm /etc/apt/sources.list.d/*.list # faster update
+      - run: make --version || apt-get update
+      - run: make --version || apt-get install make
+
+      - run: ghc   --version
+      - run: cabal --version
+
+      - name: Check out repository
+        uses: actions/checkout@v2
+
+      - run: cabal update
+      - run: make install-dependencies
+
+      - run: make
+      - run: make test
+      - run: make haddock
+      - run: make test-sdist
+      - run: make test-via-cabal
+
+  test-with-stack:
+    runs-on: ubuntu-latest
+    needs: build-and-test
+    steps:
+      - name: Setup Haskell's GHC and Cabal as required by current Stackage LTS
+        uses: haskell/actions/setup@v1
+        with: # lts-17.9
+          ghc-version: '8.10.4'
+          cabal-version: '3.2'
+
+      - uses: actions/cache@v2
+        with:
+          path: ~/.stack
+          key:          v1-${{ runner.os }}-stack-${{ hashFiles('stack.yaml') }}
+          restore-keys: v1-${{ runner.os }}-stack-
+
+      - name: Check out repository
+        uses: actions/checkout@v2
+      - run: make test-via-stack
+
+  test-with-hugs:
+    runs-on: ubuntu-latest
+    needs: build-and-test
+    steps:
+      - run: sudo apt-get install hugs
+      - name: Check out repository
+        uses: actions/checkout@v2
+      - run: make hugs-test
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
--- a/.travis.yml
+++ /dev/null
@@ -1,119 +0,0 @@
-# .travis.yml file for FitSpec
-#
-# Copyright:   (c) 2017-2020 Rudy Matela
-# License:     3-Clause BSD  (see the file LICENSE)
-# Maintainer:  Rudy Matela <rudy@matela.com.br>
-
-language: c  # not really
-
-notifications:
-  email:
-    on_failure: change
-
-sudo: false
-
-cache:
-  directories:
-  - $HOME/.ghc
-  - $HOME/.cabal
-  - $HOME/.stack
-
-before_install:
-- export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
-- ghc --version
-- cabal --version
-- haddock --version
-- du -hd3 ~/.cabal ~/.ghc || true
-- du -hd4 ~/.stack || true
-- rm -f ~/.cabal/config && cabal update
-# Download and unpack the stack executable
-# "Once Travis whitelists the stack.dev files," simply include stack in the
-# addons section. -- https://docs.haskellstack.org/en/stable/travis_ci/
-- mkdir -p ~/.local/bin
-- export PATH=$HOME/.local/bin:$PATH
-- travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
-- stack config set system-ghc --global true
-- stack --version
-- cabal install leancheck cmdargs || cabal install leancheck cmdargs --lib
-
-script:
-- make && make test
-- make haddock
-- make test-sdist
-- cabal test --ghc-option=-O0
-- stack --resolver $STACKVER --no-terminal --skip-ghc-check test --ghc-options=-O0
-
-matrix:
-  allow_failures:
-  - ghc: 'head'
-  include:
-  - ghc: 'head'
-    env:                   GHCVER=head         CABALVER=head   STACKVER=nightly-2020-03-28
-    addons: {apt: {packages: [ghc-head,   cabal-install-head], sources: hvr-ghc}}
-  - ghc: '8.8'
-    env:                   GHCVER=8.8.3        CABALVER=3.0    STACKVER=lts-15.5
-    addons: {apt: {packages: [ghc-8.8.3,  cabal-install-3.0],  sources: hvr-ghc}}
-  - ghc: '8.6'
-    env:                   GHCVER=8.6.5        CABALVER=2.4    STACKVER=lts-14.27
-    addons: {apt: {packages: [ghc-8.6.5,  cabal-install-2.4],  sources: hvr-ghc}}
-  - ghc: '8.4'
-    env:                   GHCVER=8.4.4        CABALVER=2.2    STACKVER=lts-12.26
-    addons: {apt: {packages: [ghc-8.4.4,  cabal-install-2.2],  sources: hvr-ghc}}
-  - ghc: '8.2'
-    env:                   GHCVER=8.2.2        CABALVER=2.0    STACKVER=lts-11.22
-    addons: {apt: {packages: [ghc-8.2.2,  cabal-install-2.0],  sources: hvr-ghc}}
-  - ghc: '8.0'
-    env:                   GHCVER=8.0.2        CABALVER=1.24   STACKVER=lts-9.21
-    addons: {apt: {packages: [ghc-8.0.2,  cabal-install-1.24], sources: hvr-ghc}}
-  - ghc: '7.10'
-    env:                   GHCVER=7.10.3       CABALVER=1.22   STACKVER=lts-6.35
-    addons: {apt: {packages: [ghc-7.10.3, cabal-install-1.22], sources: hvr-ghc}}
-  # we only support stack with GHC >= 7.10
-  - ghc: '7.8'
-    env:                   GHCVER=7.8.4        CABALVER=1.18
-    addons: {apt: {packages: [ghc-7.8.4,  cabal-install-1.18], sources: hvr-ghc}}
-    before_install:
-    - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
-    - ghc --version
-    - cabal --version
-    - haddock --version
-    - rm -f ~/.cabal/config && cabal update
-    - cabal install Cabal==1.18.*
-    - cabal install leancheck cmdargs
-    script:
-    - make && make test
-    - make haddock HADDOCKFLAGS=
-    - make test-sdist
-    - cabal test
-  - ghc: '7.6'
-    env:                   GHCVER=7.6.3        CABALVER=1.18
-    addons: {apt: {packages: [ghc-7.6.3,  cabal-install-1.18], sources: hvr-ghc}}
-    before_install:
-    - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
-    - ghc --version
-    - cabal --version
-    - haddock --version
-    - rm -f ~/.cabal/config && cabal update
-    - cabal install Cabal==1.18.*
-    - cabal install leancheck cmdargs
-    script:
-    - make GHCFLAGS= && make test GHCFLAGS=
-    - make haddock HADDOCKFLAGS=
-    - make test-sdist
-    - cabal test
-  - ghc: '7.4'
-    env:                   GHCVER=7.4.2        CABALVER=1.18
-    addons: {apt: {packages: [ghc-7.4.2,  cabal-install-1.18], sources: hvr-ghc}}
-    before_install:
-    - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
-    - ghc --version
-    - cabal --version
-    - haddock --version
-    - rm -f ~/.cabal/config && cabal update
-    - cabal install Cabal==1.18.*
-    - cabal install leancheck cmdargs
-    script:
-    - make GHCFLAGS= && make test GHCFLAGS=
-    - make haddock HADDOCKFLAGS=
-    - make test-sdist
-    - cabal test
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,6 @@
 GHCIMPORTDIRS = src:bench
 GHCFLAGS = -O2 $(shell grep -q "Arch Linux" /etc/lsb-release && echo -dynamic)
 CABALOPTS=
-HADDOCKFLAGS = --no-print-missing-docs
 BENCHS = \
   bench/avltrees         \
   bench/bools            \
@@ -45,8 +44,11 @@
   test/mutate      \
   test/showmutable \
   test/utils
+LIST_ALL_HSS = find \( -path "./dist*" -o -path "./.stack-work" -o -path "./Setup.hs" -o -name "haskell-src*.hs" \) -prune \
+                    -o -name "*.*hs" -print
 HADDOCKFLAGS = $(shell grep -q "Arch Linux" /etc/lsb-release && echo --optghc=-dynamic)
-LIB_DEPS = base template-haskell leancheck cmdargs
+LIB_DEPS = base template-haskell $(INSTALL_DEPS)
+INSTALL_DEPS = leancheck cmdargs
 
 all: mk/toplibs
 
@@ -68,6 +70,20 @@
 	./test/derive
 	./test/utils
 
+test-via-cabal:
+	cabal configure --enable-tests --enable-benchmarks --ghc-options="$(GHCFLAGS) -O0"
+	cabal build
+	cabal test mutate
+
+test-via-stack:
+	stack test fitspec:test:mutate --ghc-options="$(GHCFLAGS) -O0" --system-ghc --no-install-ghc --no-terminal
+
+test-sdist:
+	./test/sdist
+
+hugs-test:
+	echo 'TBA'
+
 legacy-test:
 	make clean && make test -j8 GHC=ghc-8.2  GHCFLAGS="-Werror -dynamic"
 	make clean && make test -j8 GHC=ghc-8.0  GHCFLAGS="-Werror -dynamic"
@@ -75,18 +91,6 @@
 	make clean && make test -j8 GHC=ghc-7.8  GHCFLAGS="-Werror -dynamic"
 	make clean && make test                    -j8
 
-test-via-cabal:
-	cabal configure --enable-tests --enable-benchmarks --ghc-options="-dynamic -Werror" $(CABALOPTS) && cabal build && cabal test
-
-test-sdist:
-	./test/sdist
-
-prepare-test-via-cabal:
-	rm -rf .cabal-sandbox cabal.sandbox.config
-	cabal sandbox init
-	cabal install --only-dependencies --enable-documentation
-	cabal configure --enable-tests --enable-benchmarks
-
 legacy-test-via-cabal:
 	cabal-ghc-8.2  configure --enable-tests --enable-benchmarks --ghc-option=-dynamic && cabal-ghc-8.2  build && cabal-ghc-8.2  test
 	cabal-ghc-8.0  configure --enable-tests --enable-benchmarks --ghc-option=-dynamic && cabal-ghc-8.0  build && cabal-ghc-8.0  test
@@ -104,7 +108,7 @@
 	cabal-ghc-7.8  install --only-dependencies --enable-tests --enable-benchmarks
 
 clean: clean-hi-o clean-haddock
-	rm -f $(TESTS) $(BENCHS) $(EGS) {eg,bench}/*.{hi,o,dyn_hi,dyn_o}
+	rm -f $(TESTS) $(BENCHS) $(EGS) {eg,bench}/*.{hi,o,dyn_hi,dyn_o} TAGS tags mk/toplibs
 
 # Debug: just list all source files compiled normally
 list-hs:
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -167,8 +167,8 @@
 
 [fitspec-logo]: https://github.com/rudymatela/fitspec/raw/master/doc/fitspec.svg?sanitize=true
 
-[build-status]: https://travis-ci.org/rudymatela/fitspec.svg?branch=master
-[build-log]:    https://travis-ci.org/rudymatela/fitspec
+[build-log]:    https://github.com/rudymatela/fitspec/actions/workflows/build.yml
+[build-status]: https://github.com/rudymatela/fitspec/actions/workflows/build.yml/badge.svg
 [hackage-version]: https://img.shields.io/hackage/v/fitspec.svg
 [fitspec-on-hackage]:                  https://hackage.haskell.org/package/fitspec
 [latest FitSpec version from Hackage]: https://hackage.haskell.org/package/fitspec
diff --git a/bench/digraphs.hs b/bench/digraphs.hs
--- a/bench/digraphs.hs
+++ b/bench/digraphs.hs
@@ -123,9 +123,7 @@
   , (isPath, \ns d -> D [])
   ]
 
--- Choosen node-label test type.
-type A = Nat
-
+main :: IO ()
 main = do
   unless listableOK
     $ putStrLn "WARNING: Listable Digraph is broken!  (read my source.)"
diff --git a/fitspec.cabal b/fitspec.cabal
--- a/fitspec.cabal
+++ b/fitspec.cabal
@@ -1,5 +1,5 @@
 name:                fitspec
-version:             0.4.8
+version:             0.4.10
 synopsis:            refining property sets for testing Haskell programs
 description:
   FitSpec provides automated assistance in the task of refining test properties
@@ -31,7 +31,7 @@
                , doc/tutorial-property-creation.md
                , doc/fitspec.svg
 extra-source-files: .gitignore
-                  , .travis.yml
+                  , .github/workflows/build.yml
                   , Makefile
                   , bench/haskell-src-exts.hs
                   , bench/haskell-src.hs
@@ -63,7 +63,7 @@
 source-repository this
   type:            git
   location:        https://github.com/rudymatela/fitspec
-  tag:             v0.4.8
+  tag:             v0.4.10
 
 
 library
@@ -80,7 +80,7 @@
                  , Test.FitSpec.Utils
                  , Test.FitSpec.PrettyPrint
   other-modules: Test.FitSpec.Dot
-  build-depends: base >= 4 && < 5, leancheck >= 0.9.3, cmdargs, template-haskell
+  build-depends: base >= 4 && < 5, leancheck >= 0.9.6, cmdargs, template-haskell
   hs-source-dirs:    src
   default-language:  Haskell2010
 
diff --git a/mk/depend.mk b/mk/depend.mk
--- a/mk/depend.mk
+++ b/mk/depend.mk
@@ -57,38 +57,6 @@
   src/Test/FitSpec/Derive.hs \
   bench/digraphs.hs \
   bench/Digraph.hs
-bench/haskell-src-exts: \
-  mk/toplibs
-bench/haskell-src-exts.o: \
-  src/Test/FitSpec/Utils.hs \
-  src/Test/FitSpec/TestTypes.hs \
-  src/Test/FitSpec/ShowMutable/Tuples.hs \
-  src/Test/FitSpec/ShowMutable.hs \
-  src/Test/FitSpec/Report.hs \
-  src/Test/FitSpec/PrettyPrint.hs \
-  src/Test/FitSpec.hs \
-  src/Test/FitSpec/Mutable/Tuples.hs \
-  src/Test/FitSpec/Mutable.hs \
-  src/Test/FitSpec/Main.hs \
-  src/Test/FitSpec/Engine.hs \
-  src/Test/FitSpec/Derive.hs \
-  bench/haskell-src-exts.hs
-bench/haskell-src: \
-  mk/toplibs
-bench/haskell-src.o: \
-  src/Test/FitSpec/Utils.hs \
-  src/Test/FitSpec/TestTypes.hs \
-  src/Test/FitSpec/ShowMutable/Tuples.hs \
-  src/Test/FitSpec/ShowMutable.hs \
-  src/Test/FitSpec/Report.hs \
-  src/Test/FitSpec/PrettyPrint.hs \
-  src/Test/FitSpec.hs \
-  src/Test/FitSpec/Mutable/Tuples.hs \
-  src/Test/FitSpec/Mutable.hs \
-  src/Test/FitSpec/Main.hs \
-  src/Test/FitSpec/Engine.hs \
-  src/Test/FitSpec/Derive.hs \
-  bench/haskell-src.hs
 bench/Heap.o: \
   bench/Heap.hs
 bench/heaps: \
diff --git a/mk/ghcdeps b/mk/ghcdeps
--- a/mk/ghcdeps
+++ b/mk/ghcdeps
@@ -2,7 +2,7 @@
 #
 # ghcdeps: generate Haskell make dependencies for compiling with GHC.
 #
-# Copyright (c) 2015-2020 Rudy Matela.
+# Copyright (c) 2015-2021 Rudy Matela.
 # Distributed under the 3-Clause BSD licence.
 #
 # From a list of files provided on standard input,
@@ -46,4 +46,5 @@
 	rm -f tmp.mk
 done |
 sort |
+grep -v "^Loaded package environment from " |
 sed -e 's,  *, \\\n  ,g'
diff --git a/mk/haddock-i b/mk/haddock-i
--- a/mk/haddock-i
+++ b/mk/haddock-i
@@ -2,7 +2,7 @@
 #
 # haddock-i: list haddock's -i parameters.
 #
-# Copyright (c) 2015-2020 Rudy Matela.
+# Copyright (c) 2015-2021 Rudy Matela.
 # Distributed under the 3-Clause BSD licence.
 #
 # $ haddock-i <package1> <package2> ... <packageN>
diff --git a/mk/haskell.mk b/mk/haskell.mk
--- a/mk/haskell.mk
+++ b/mk/haskell.mk
@@ -1,6 +1,6 @@
 # Implicit rules for compiling Haskell code.
 #
-# Copyright (c) 2015-2020 Rudy Matela.
+# Copyright (c) 2015-2021 Rudy Matela.
 # Distributed under the 3-Clause BSD licence.
 #
 # You can optionally configure the "Configuration variables" below in your main
@@ -21,6 +21,7 @@
 GHC ?= ghc
 GHCCMD = $(GHC) -i$(GHCIMPORTDIRS) $(GHCFLAGS)
 HADDOCK ?= haddock
+CABAL_INSTALL = $(shell cabal --version | grep -q "version [0-2]\." && echo 'cabal install' || echo 'cabal v1-install')
 
 # Hugs Parameters
 HUGSIMPORTDIRS ?= "/usr/lib/hugs/packages/*"
@@ -46,19 +47,13 @@
 
 LIB_DEPS ?= base
 ALL_DEPS ?= $(LIB_DEPS)
+INSTALL_DEPS ?=
 
 PKGNAME = $(shell cat *.cabal | grep "^name:"    | sed -e "s/name: *//")
-HADDOCK_VERSION = $(shell $(HADDOCK) --version | grep version | sed -e 's/.*version //;s/,.*//')
-HADDOCK_MAJOR = $(shell echo $(HADDOCK_VERSION) | sed -e 's/\..*//')
-HADDOCK_MINOR = $(shell echo $(HADDOCK_VERSION) | sed -e 's/[0-9]*\.\([0-9]*\).[0-9]*/\1/')
-HADDOCK_PKG_NAME = $(shell [ $(HADDOCK_MAJOR) -gt 2 ] \
-                        || [ $(HADDOCK_MAJOR) -eq 2 -a $(HADDOCK_MINOR) -ge 20 ] \
-                        && echo "--package-name=$(PKGNAME)")
-HADDOCK_HLNK_SRC = $(shell [ $(HADDOCK_MAJOR) -gt 2 ] \
-                        || [ $(HADDOCK_MAJOR) -eq 2 -a $(HADDOCK_MINOR) -ge 17 ] \
-                        && echo "--hyperlinked-source")
 
+HADDOCK_HAS = haddock --help | grep -q --
 
+
 # Implicit rules
 %.hi %.o: %.hs
 	$(GHCCMD) $< && touch $@
@@ -80,7 +75,8 @@
 
 
 # Cleaning rule (add as a clean dependency)
-.PHONY: clean-hi-o
+clean-hs: clean-hi-o clean-haddock clean-cabal clean-stack
+
 clean-hi-o:
 	find $(ALL_HSS) | sed -e 's/hs$$/o/'      | xargs rm -f
 	find $(ALL_HSS) | sed -e 's/hs$$/hi/'     | xargs rm -f
@@ -93,6 +89,9 @@
 depend:
 	find $(ALL_HSS) | ./mk/ghcdeps -i$(GHCIMPORTDIRS) $(GHCFLAGS) > $(DEPMK)
 
+install-dependencies:
+	$(CABAL_INSTALL) $(INSTALL_DEPS)
+
 # haddock rules
 haddock: doc/index.html
 
@@ -109,10 +108,16 @@
 	./mk/haddock-i $(LIB_DEPS) | xargs \
 	$(HADDOCK) --html -odoc $(LIB_HSS) \
 	  --title=$(PKGNAME) \
-	  $(HADDOCK_PKG_NAME) \
-	  $(HADDOCK_HLNK_SRC) \
+	  $(shell $(HADDOCK_HAS) --package-name          && echo "--package-name=$(PKGNAME)" ) \
+	  $(shell $(HADDOCK_HAS) --hyperlinked-source    && echo "--hyperlinked-source"      ) \
+	  $(shell $(HADDOCK_HAS) --no-print-missing-docs && echo --no-print-missing-docs     ) \
 	  $(HADDOCKFLAGS)
 
+clean-cabal:
+	rm -rf dist/ dist-newstyle/ cabal.project.local cabal.project.local~
+
+clean-stack:
+	rm -rf .stack-work/ stack.yaml.lock
 
 # lists all Haskell source files
 list-all-hss:
diff --git a/mk/install-on b/mk/install-on
--- a/mk/install-on
+++ b/mk/install-on
@@ -2,9 +2,12 @@
 #
 # mk/install-on: install or updates the mk folder on a Haskell project
 #
+# Copyright (c) 2019-2021 Rudy Matela.
+# Distributed under the 3-Clause BSD licence.
+#
 # usage: ./mk/install-on path/to/project
 #
-# This assumes a few things:
+# This script assumes that:
 #
 # * tests are stored in a "test/" folder
 # * sources are stored in a "src/" folder
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,7 +1,7 @@
-resolver: lts-15.5 # or ghc-8.8.3
+resolver: lts-17.9 # or ghc-8.10.4
 
 packages:
 - .
 
 extra-deps:
-- leancheck-0.9.3
+- leancheck-0.9.6
diff --git a/test/sdist b/test/sdist
--- a/test/sdist
+++ b/test/sdist
@@ -2,7 +2,7 @@
 #
 # test/sdist: tests the package generated by "cabal sdist".
 #
-# Copyright (c) 2015-2020 Rudy Matela.
+# Copyright (c) 2015-2021 Rudy Matela.
 # Distributed under the 3-Clause BSD licence.
 
 set -xe
