added in some metaprogrammed helpers and began DRYing up shared examples