realize the abstract factory methode