js is mostly done