added addOnce() method