diff --git a/geonames.pl b/geonames.pl
index 554449730d4b71fee0089f163bb831994112c418..ce0ba35399602dec83ee487669eb9d4d14bded4d 100755
--- a/geonames.pl
+++ b/geonames.pl
@@ -33,16 +33,20 @@ sub write_data
 
   print FO join ("\t", @columns), "\n";
 
-  foreach my $id (sort keys %$data)
+  ID: foreach my $id (sort keys %$data)
   {
-    my @fields= $id;
+    my $d= $data->{$id};
+
+    next ID unless (exists($d->{P227}));
+
+    my @vals= $id;
     foreach my $what (@what)
     {
-      my $x= $data->{$what};
-      push (@fields, map { $x->{$_} } @fields);
+      my $w= $d->{$what};
+      push (@vals, map { $w->{$_} } @fields);
     }
 
-    print FO join ("\t", @fields), "\n";
+    print FO join ("\t", @vals), "\n";
   }
   close (FO);
 }
@@ -55,7 +59,7 @@ sub read_tsv
   my $only_matching= shift;
 
   open (FI, '<:utf8', $tsv) or die "can't read $tsv";
-  my $columns= <FI>;
+  my $columns= <FI>; # TODO: chop columns and prepare index to match column numbers later on
   print "reading $tsv\n";
   my $count= 0;
   LINE: while (<FI>)