it sucks because it's JSON