#76, #77, #78 and sweeping improvements