Adding comments, throwing IO exception at factory level for better error handling, moving getName into StorageSystem interface