major update...still in progress