Splitting up implementations across modules.
Getting better at haskell.