Very messy implementation of unary operators