use type-driven base factory test