add a seemingly more accurate method