Converted to TypeScript and added a Makefile