update with various fixes and feature