updated to be more complete