inital factory abstractions