add precondition