third time is a charm

WIP redesign, using types & providers
binding.pry statement left in