requires guard