implemented pre and post checks