if something goes wrong, just return None.
v2.1.2