Location hierarchy should not allow loops, description should not be required

Added a unit test, changed the error text to further explain why error,
reformated the files