If login fails, null is passed back instead of object.
Updated copyright year, cleaned up badges, code formatting tweaks.