refactored describe function to a class
split out classes and added inheritance
refactor permissions function
moar refactor