updated for accuracy and readability