Major refactoring of Restrictions API

Removed a number of empty interfaces in favor of the BasicRestrictions generic class