Adding ILabyrinth, actual factory pattern implementation, better abstraction