splitting implementation into a separate package to potentially allow for other sorts of output, too.