need pointer for spout polymorphism, not a reference