refactored to separate classpathscanner and handler