1 - for related functions, I'd rather not traverse twice and have two separate code paths.  I think it's just two booleans to the Clean() method.