add type-driven base factory test