updated add() to handle empty dirs