Rewrote entire library to use container-interop and PSR-4