a rich & unified model constructor