add expensive or not expensive to conditions
fix bug