drop policeable interface. pass policies to constructors to simplify everything.