updates from original fork