implement rule construction