new hierarchical solver