separate 'primitive' Id in Sugar
use some legal variable name instead of "$"
normalise lazily