updated to use autoloading and require-dev