diff --git a/src/gambit/results.py b/src/gambit/results.py
index bd76a8e..c0af9db 100644
--- a/src/gambit/results.py
+++ b/src/gambit/results.py
@@ -11,7 +11,7 @@
 
 from gambit.util.io import FilePath, maybe_open
 import gambit.util.json as gjson
-from gambit.query import QueryResults, QueryResultItem, QueryInput
+from gambit.query import QueryResults, QueryResultItem
 from gambit.db import ReferenceGenomeSet, Taxon, AnnotatedGenome, Genome
 
 
@@ -84,8 +84,9 @@ class CSVResultsExporter(AbstractResultsExporter):
 	"""
 	format_opts: dict[str, Any]
 
+	# Pairs of column name and QueryResultItem attribute
 	COLUMNS = [
-		('query', 'input.label'),
+		('query', 'label'),
 		('predicted.name', 'report_taxon.name'),
 		('predicted.rank', 'report_taxon.rank'),
 		('predicted.ncbi_id', 'report_taxon.ncbi_id'),
@@ -140,20 +141,15 @@ def _results_to_json(self, results: QueryResults):
 	@to_json.register(QueryResultItem)
 	def _item_to_json(self, item: QueryResultItem):
 		return dict(
-			query=item.input,
+			query=dict(
+				name=item.label,
+				path=item.file,
+			),
 			predicted_taxon=item.report_taxon,
 			next_taxon=item.classifier_result.next_taxon,
 			closest_genomes=item.closest_genomes,
 		)
 
-	@to_json.register(QueryInput)
-	def _input_to_json(self, input: QueryInput):
-		return dict(
-			name=input.label,
-			path=None if input.file is None else input.file.path,
-			format=None if input.file is None else input.file.format,
-		)
-
 	@to_json.register(ReferenceGenomeSet)
 	def _genomeset_to_json(self, gset: ReferenceGenomeSet):
 		return _todict(gset, ['id', 'key', 'version', 'name', 'description'])
diff --git a/tests/results.py b/tests/results.py
index 11491ba..1f3d0d1 100644
--- a/tests/results.py
+++ b/tests/results.py
@@ -269,7 +269,7 @@ def check_csv_results(file: TextIO, results: QueryResults, strict: bool = False)
 	assert len(rows) == len(results.items)
 
 	for item, row in zip(results.items, rows):
-		assert row['query'] == item.input.label
+		assert row['query'] == item.label
 
 		cmp_csv_taxon(row, item.report_taxon, 'predicted')
 		cmp_csv_taxon(row, item.classifier_result.next_taxon, 'next')
diff --git a/tests/test_results.py b/tests/test_results.py
index b739042..60e6930 100644
--- a/tests/test_results.py
+++ b/tests/test_results.py
@@ -2,7 +2,7 @@
 
 import pytest
 
-from gambit.query import QueryResults, QueryResultItem, QueryInput, QueryParams
+from gambit.query import QueryResults, QueryResultItem, QueryParams
 from gambit.classify import ClassifierResult, GenomeMatch
 from gambit.db import ReferenceGenomeSet, Genome
 from gambit.sigs import SignaturesMeta
@@ -77,14 +77,15 @@ def results(session):
 	for i, cr in enumerate(classifier_results):
 		predicted = cr.predicted_taxon
 		items.append(QueryResultItem(
-			input=QueryInput(f'query-{i}', SequenceFile(f'query-{i}.fasta', 'fasta')),
+			f'query-{i}',
 			classifier_result=cr,
+			file=f'query-{i}.fasta',
 			report_taxon=None if predicted is None else predicted.parent if i % 4 == 0 else predicted,
 			closest_genomes=[cr.closest_match],
 		))
 
-	# Set one input file to None
-	items[-1].input.file = None
+	# Set one file to None
+	items[-1].file = None
 
 	return QueryResults(
 		items=items,