edit abstarct factory