Update to use Lua, address feedback