better guards
removed trigger from invalidateLayout