done mostly
still works