Refactor primary Vertigo interface to use factories and generic types.