added initial implementation and rules