basic rules implemented