cleaned up pools a bit more and collapsed the additional logic in _make_traits