many changes see readme