GHC uses .(l)hs-boot files to resolve mutually recursive modules
http://www.haskell.org/ghc/docs/latest/html/users_guide/separate-compilation.html#mutual-recursion