a few improvements including data providers to allow for one assert per test