finished pre and post conditions