Several improvements. Too many to explain