added coomments and changed the property def order