Eval is always bad when user-defined data is present. Let's use JSON!