some caching ... will remove and simplify for next version