Added Exception handling
Now Handles Cyclic Links

No longer adds the same link multiple times to the process queue,
instead, an hashmap was created to hold all added links so we can check
if already exists before adding it to the process queue.