third time is a charm

WIP redesign, using types & providers