Lots of changes updating the project to support newer node and typescript