basic rule logic