generalized abstract factories; now usable for all ecamp modules