Two versions: internal JS & server-based Python