- changed "SPI" into something more familiar, like "implementation" - throw exceptions on invalid implementation types or invalid class names - use null instead of false when querying - refactored the tests accordingly