
package Employee;
use base 'Person';

my %permitted = map {$_ => 1} qw(BOSS DEPARTMENT);
sub new {
  my $class = shift;
  my %a = @_;
  my %ea;
  for my $k (keys %a) {
    if ($permitted{$k}) {
      $ea{$k} = delete $a{$k};
    }
  }
  my $self = $class->SUPER::new(%a);
  %$self = (%$self, %ea);
  bless $self=>$class;
}

sub boss {
  my $self = shift;
  if (@_) {
    my $new_boss = shift;
#    $new_boss->team_add($self);
#    $self->{BOSS}->team_remove($self) if defined $self->{BOSS};
    $self->{BOSS} = $new_boss;
  }
  return $self->{BOSS};
}

sub department {
  my $self = shift;
  $self->{DEPARTMENT} = shift if @_;
  return $self->{DEPARTMENT};
}

sub is_important {
  my ($object) = @_;
  return ! defined $object->boss
    || $object->boss->department ne $object->department;
}


1;
