Played a bit with abstract factories