initial ruler implementation