added promote, demote and a fix