added swap and drop, avoid shortcut bool operators to force reduction