Yilong tuffy port

This is a temporary pull request to review the changes.
It exists in master but not in develop?How did this happen? 

What do you mean by "unreliable"? Do we want "id" because it's random or we do *not* want it because it's random?