rules impl