REFACTOR : improved add func.