polymorphism output
generate less signature