made it less pretty but much faster...
still slower then data.frame