Use list instead of set, and OrderedDict in get_materials to keep material order
Add example/test data