applied all corrections by phill