Added description
Added more tests
Split indiviual type loading into seperate modules