fixed add to handle special cases