add caching and also return '(unknown user)' if all the username detection methods failed