all the TMX generation probably deserves its own class