refactoring to enable new policies to be implemented