basic invalidation implementation
separating some concerns