diff --git a/substrate/core/service/src/lib.rs b/substrate/core/service/src/lib.rs
index 363ad9cfdada3469bcebfa2dfc3d7d47fc397b5c..1362e86c2148d618323286b7e07e41cd8c886687 100644
--- a/substrate/core/service/src/lib.rs
+++ b/substrate/core/service/src/lib.rs
@@ -454,7 +454,7 @@ pub trait AbstractService: 'static + Future<Item = (), Error = Error> +
 	/// Configuration struct of the service.
 	type Config;
 	/// Chain selection algorithm.
-	type SelectChain;
+	type SelectChain: consensus_common::SelectChain<Self::Block>;
 	/// API of the transaction pool.
 	type TransactionPoolApi: ChainApi<Block = Self::Block>;
 	/// Network specialization.
@@ -524,7 +524,7 @@ where TCfg: 'static + Send,
 	TBackend: 'static + client::backend::Backend<TBl, Blake2Hasher>,
 	TExec: 'static + client::CallExecutor<TBl, Blake2Hasher> + Send + Sync + Clone,
 	TRtApi: 'static + Send + Sync,
-	TSc: 'static + Clone + Send,
+	TSc: consensus_common::SelectChain<TBl> + 'static + Clone + Send,
 	TExPoolApi: 'static + ChainApi<Block = TBl>,
 	TOc: 'static + Send + Sync,
 	TNetSpec: NetworkSpecialization<TBl>,