Pull GracefulListener into this package

There's little benefit to having it as a separate package.