Facet construction re-written to make it more flexible and OO.