class Loader {

    public void load( Path archive, Path databaseDestination, Path transactionLogsDirectory ) throws IOException, IncorrectFormat
    {
        validatePath( databaseDestination );
        validatePath( transactionLogsDirectory );

        createDestination( databaseDestination );
        createDestination( transactionLogsDirectory );

        try ( ArchiveInputStream stream = openArchiveIn( archive );
              Resource ignore = progressPrinter.startPrinting() )
        {
            ArchiveEntry entry;
            while ( (entry = nextEntry( stream, archive )) != null )
            {
                Path destination = determineEntryDestination( entry, databaseDestination, transactionLogsDirectory );
                loadEntry( destination, stream, entry );
            }
        }
    }

    @VisibleForTesting  Loader();
    public  Loader( PrintStream output );

}