$object->warehouse_id($wh->id);
   }
 
-  # Check wether or not warehouse ID is valid.
+  # Check whether or not warehouse ID is valid.
   if ($object->warehouse_id && !$self->warehouses_by->{id}->{ $object->warehouse_id }) {
     push @{ $entry->{errors} }, $::locale->text('Error: Invalid warehouse');
     return 0;
     $object->bin_id($bin->id);
   }
 
-  # Check wether or not bin ID is valid.
+  # Check whether or not bin ID is valid.
   if ($object->bin_id && !$self->bins_by->{_wh_id_and_id_ident()}->{ _wh_id_and_id_maker($object->warehouse_id, $object->bin_id) }) {
     push @{ $entry->{errors} }, $::locale->text('Error: Invalid bin');
     return 0;
 
   my $object = $entry->{object};
 
-  # Check wether or non part ID is valid.
+  # Check whether or not part ID is valid.
   if ($object->parts_id && !$self->parts_by->{id}->{ $object->parts_id }) {
     push @{ $entry->{errors} }, $::locale->text('Error: Invalid part');
     return 0;
 
 
   my $object = $entry->{object};
 
-  # Check wether or not part ID is valid.
+  # Check whether or not part ID is valid.
   if ($object->parts_id && !$self->parts_by->{id}->{ $object->parts_id }) {
     push @{ $entry->{errors} }, $::locale->text('Error: Invalid part');
     return 0;
   my $cp_cv_id = $object->customer_id || $object->vendor_id;
   return 0 unless $cp_cv_id;
 
-  # Check wether or not contact ID is valid.
+  # Check whether or not contact ID is valid.
   if ($object->cp_id && !$self->contacts_by->{'cp_cv_id+cp_id'}->{ $cp_cv_id . '+' . $object->cp_id }) {
     push @{ $entry->{errors} }, $::locale->text('Error: Invalid contact');
     return 0;
 
   my $object = $entry->{object};
 
-  # Check wether or not department ID is valid.
+  # Check whether or not department ID is valid.
   if ($object->department_id && !$self->departments_by->{id}->{ $object->department_id }) {
     push @{ $entry->{errors} }, $::locale->text('Error: Invalid department');
     return 0;
 
   my $object = $entry->{object};
 
-  # Check wether or not projetc ID is valid.
+  # Check whether or not projetc ID is valid.
   if ($object->$id_column && !$self->projects_by->{id}->{ $object->$id_column }) {
     push @{ $entry->{errors} }, $::locale->text('Error: Invalid project');
     return 0;
   my $trans_id = $object->customer_id || $object->vendor_id;
   return 0 unless $trans_id;
 
-  # Check wether or not shipto ID is valid.
+  # Check whether or not shipto ID is valid.
   if ($object->shipto_id && !$self->ct_shiptos_by->{'trans_id+shipto_id'}->{ $trans_id . '+' . $object->shipto_id }) {
     push @{ $entry->{errors} }, $::locale->text('Error: Invalid shipto');
     return 0;
 
   my $object = $entry->{object};
 
-  # Check wether or not price_factor ID is valid.
+  # Check whether or not price_factor ID is valid.
   if ($object->price_factor_id && !$self->price_factors_by->{id}->{ $object->price_factor_id }) {
     push @{ $entry->{errors} }, $::locale->text('Error: Invalid price factor');
     return 0;
 
   my $object = $entry->{object};
 
-  # Check wether or not pricegroup ID is valid.
+  # Check whether or not pricegroup ID is valid.
   if ($object->pricegroup_id && !$self->pricegroups_by->{id}->{ $object->pricegroup_id }) {
     push @{ $entry->{errors} }, $::locale->text('Error: Invalid price group');
     return 0;
 
 
 # note, the html checker is not really thorough.
 # in particular it will not find standard tags with parameters.
-# the estimate wether a file is dirty or not is still pretty helpful, as it will catch most of the closing tags.
+# the estimate whether a file is dirty or not is still pretty helpful, as it will catch most of the closing tags.
 # if you are in doubt about a specific file, you still have to check it manually.
 my $tags = qr/b|i|u|h[1-6]|a href.*|input|form|br|textarea|table|tr|td|th|body|head|html|p|button|select|option|script/;
 my $todo_files_re = qr{^bin/mozilla/ic\.pl$};