WIP: add a way of extracting the implict interfaces defined by an abstract type