js is hard