support empty list