still needs volume.driver implementation, some error handling and a get valid types method