in reply to packages (Classes) and file names
It's not "wrong" per-se, but you get more capability from it if you define sub-classes with a package matching the file name. Consider the case where someone wants to connect to both active directory and their database and compare the two. With separate classes a user can make one object of each kind, but if you make dynamic extensions for a single class then the user is limited to one implementation per process.