reduce class hierarchy
reduce class hierarchy
add TEST_REQUIRES