Version 2: Restructured repository (PSR-4), use namespacing and late static binding.