return empty list on failure