diff --git a/src/lib.rs b/src/lib.rs
index 85d53af052d4f39231e304f135fc54eb308ae541..5f709e740cc15be7a800378cf1da7118f0b5d264 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,34 +1,38 @@
-use std::{fmt::Display, marker::PhantomData};
+use std::fmt::Display;
 
 use jsonschema::{Draft, JSONSchema};
 use serde_json::{Map, Value};
 
-pub struct Inspector<T> {
+pub struct Inspector {
     schema: JSONSchema,
-    marker: PhantomData<T>,
 }
 
-impl<T> Inspector<T> {
+impl Inspector {
     const PROP: &'static str = "properties";
     const REF: &'static str = "$ref";
     const AOF: &'static str = "allOf";
 
+    /// Initialize an Inspector using the name of the type provided to the function using the turbofish syntax
+    pub fn new_infer<T>(schemas: &Value, resolve_refs: bool) -> Result<Self, InitError> {
+        // get target name from type inference
+        let target = std::any::type_name::<T>()
+            .split("::")
+            .last()
+            .ok_or(InitError::UnknownFailure)?;
+        Self::new(target, schemas, resolve_refs)
+    }
+
     /// Construct an instance of a schema `Inspector` using the provided OpenAPI spec's schemas (in the form of `serde_json::Value`)
-    pub fn new(schemas: &Value, resolve_refs: bool) -> Result<Self, InitError> {
+    pub fn new(target: &str, schemas: &Value, resolve_refs: bool) -> Result<Self, InitError> {
         use InitError::*;
         // extract schemas object
         let Value::Object(schemas) = schemas else {
             return Err(InitError::UnknownFailure);
         };
-        // get target name from type inference
-        let target_name = std::any::type_name::<T>()
-            .split("::")
-            .last()
-            .ok_or(UnknownFailure)?;
         // extract target from schema
         let Value::Object(mut target) = schemas
-            .get(target_name)
-            .ok_or(SchemaNotFound(target_name))?
+            .get(target)
+            .ok_or_else(|| SchemaNotFound(target.to_owned()))?
             .to_owned()
         else {
             return Err(InitError::UnknownFailure);
@@ -48,7 +52,6 @@ impl<T> Inspector<T> {
                 .compile(&Value::Object(target))
                 .ok()
                 .ok_err()?,
-            marker: PhantomData,
         })
     }
 
@@ -126,7 +129,7 @@ impl Display for SchemaError {
 
 #[derive(Debug)]
 pub enum InitError {
-    SchemaNotFound(&'static str),
+    SchemaNotFound(String),
     ResolutionFailure(String),
     CompileFailure,
     UnknownFailure,