re-implement OneRule