Abstract factory, example 2