diff --git a/src/plugin/mod.rs b/src/plugin/mod.rs
index bb33b8d237855cfcc650bd579ea05a78b5a873d9..9ecc89b1829bd22bd529c3f905337ad240d8f461 100644
--- a/src/plugin/mod.rs
+++ b/src/plugin/mod.rs
@@ -7,7 +7,6 @@ pub mod topology;
 use once_cell::unsync;
 use picoplugin::background::ServiceId;
 use picoplugin::plugin::interface::ServiceBox;
-use serde::de::Error;
 use serde::{Deserialize, Serialize};
 use std::fmt::{Display, Formatter};
 use std::fs::File;
@@ -60,7 +59,7 @@ pub enum PluginError {
     #[error("Error while discovering manifest for plugin `{0}`: {1}")]
     ManifestNotFound(String, io::Error),
     #[error("Error while parsing manifest `{0}`, reason: {1}")]
-    InvalidManifest(String, serde_yaml::Error),
+    InvalidManifest(String, Box<dyn std::error::Error>),
     #[error("`{0}` service defenition not found")]
     ServiceDefenitionNotFound(String),
     #[error("Read plugin_dir: {0}")]
@@ -234,12 +233,12 @@ impl Manifest {
         })?;
 
         let manifest: Manifest = serde_yaml::from_reader(file).map_err(|e| {
-            PluginError::InvalidManifest(manifest_path.to_string_lossy().to_string(), e)
+            PluginError::InvalidManifest(manifest_path.to_string_lossy().to_string(), e.into())
         })?;
         if manifest.name != plugin_name || manifest.version != version {
             return Err(PluginError::InvalidManifest(
                 manifest_path.to_string_lossy().to_string(),
-                serde_yaml::Error::custom("plugin name or version should be equal to manifest one"),
+                "plugin name or version should be equal to manifest one".into(),
             ));
         }