partially done, fix some other things tomorrow