done so far.... still buggy