There's probably enough whitelist/blacklist code that it should go in it's own module, not sure what to call it though.