implementation of not