encapsulate all taxon logic in new class