new factory with packages support