I'd actually suggest you have the constructor take a string, and have a static method that takes a filename and returns an instance of this class. By making the constructor take a filename, you are coupling this to the storage mechanism...