Fixed bug where undefined callback is called
Made the lookup clever

If opts is of type string, we can safely assume a string to lookup is given on purpose; use that. Else, we verify if required objects are given (making the new detection system not break previous changes).
Merge remote-tracking branch 'origin/patch-2'