simplified the factory interface just a tiny bit