documented and cleaned up Types