should we return None or raise exception?