Inspiration This package was heavily inspired by this talk by @bobuk: Core code was borrowed from this gist: