Updated for best practice coding.