hack attempt at prefix operators, seems to work but is quite hard to read