added negative and some other stuff