added return on add function (to allow chaining), added overlap check on add