sub new { my $proto = shift; my $class = ref($proto) || $proto;