updated based on PR