golang polymorphism is painful