add demote() method