use new object factory interface