add CIlib impl