support wicked-old browsers

no more Object.keys or Array.isArray means this should work everywhere for-each does, (which is pretty much everywhere)