common abstract factories added