implement all flavours of RET