diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs b/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs
index e5b785dd0d..f8d7a78af2 100644
--- a/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs
+++ b/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs
@@ -25,12 +25,12 @@ use std::{fmt, fs};
use subspace_core_primitives::crypto::kzg::{embedded_kzg_settings, Kzg};
use subspace_core_primitives::{PublicKey, Record, SectorIndex};
use subspace_erasure_coding::ErasureCoding;
-use subspace_farmer::farm::Farm;
+use subspace_farmer::farm::{
+ Farm, FarmingNotification, SectorExpirationDetails, SectorPlottingDetails, SectorUpdate,
+};
use subspace_farmer::farmer_cache::FarmerCache;
-use subspace_farmer::single_disk_farm::farming::FarmingNotification;
use subspace_farmer::single_disk_farm::{
- SectorExpirationDetails, SectorPlottingDetails, SectorUpdate, SingleDiskFarm,
- SingleDiskFarmError, SingleDiskFarmOptions,
+ SingleDiskFarm, SingleDiskFarmError, SingleDiskFarmOptions,
};
use subspace_farmer::utils::farmer_piece_getter::{DsnCacheRetryPolicy, FarmerPieceGetter};
use subspace_farmer::utils::piece_validator::SegmentCommitmentPieceValidator;
diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm/metrics.rs b/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm/metrics.rs
index 3a5abf558e..888f69716b 100644
--- a/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm/metrics.rs
+++ b/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm/metrics.rs
@@ -7,9 +7,7 @@ use std::fmt;
use std::sync::atomic::{AtomicI64, AtomicU64};
use std::time::Duration;
use subspace_core_primitives::SectorIndex;
-use subspace_farmer::farm::FarmId;
-use subspace_farmer::single_disk_farm::farming::ProvingResult;
-use subspace_farmer::single_disk_farm::FarmingError;
+use subspace_farmer::farm::{FarmId, FarmingError, ProvingResult};
#[derive(Debug, Copy, Clone)]
pub(super) enum SectorState {
diff --git a/crates/subspace-farmer/src/farm.rs b/crates/subspace-farmer/src/farm.rs
index 5efa13c8cf..16e59237e1 100644
--- a/crates/subspace-farmer/src/farm.rs
+++ b/crates/subspace-farmer/src/farm.rs
@@ -1,19 +1,21 @@
-use crate::single_disk_farm::farming::FarmingNotification;
-use crate::single_disk_farm::plot_cache::MaybePieceStoredResult;
-use crate::single_disk_farm::SectorUpdate;
+use crate::node_client;
use async_trait::async_trait;
use derive_more::{Display, From};
use futures::Stream;
-use parity_scale_codec::{Decode, Encode};
+use parity_scale_codec::{Decode, Encode, Input, Output};
use serde::{Deserialize, Serialize};
-use std::fmt;
use std::future::Future;
use std::pin::Pin;
use std::sync::Arc;
-use subspace_core_primitives::{Piece, PieceIndex, PieceOffset, SectorIndex};
+use std::time::Duration;
+use std::{fmt, io};
+use subspace_core_primitives::{Piece, PieceIndex, PieceOffset, SectorIndex, SegmentIndex};
+use subspace_farmer_components::auditing::AuditingError;
use subspace_farmer_components::plotting::PlottedSector;
+use subspace_farmer_components::proving::ProvingError;
use subspace_networking::libp2p::kad::RecordKey;
use subspace_rpc_primitives::SolutionResponse;
+use thiserror::Error;
use ulid::Ulid;
/// Erased error type
@@ -70,6 +72,16 @@ pub trait PieceCache: Send + Sync + fmt::Debug {
async fn read_piece(&self, offset: PieceCacheOffset) -> Result