added problems
refactors restriction macro