Abstract factory from The Troll Inception framework