revised and updated to reflect current state