please refer to [1]