added pass and fail implementation