Hot Towel port to TypeScript