some improvmentssss, still some bugs