moved factory to abstract factory for same reasons as for flush buffer factory