updated to be psr-4 compatible