refactor core, add fault policies