add deep compare
make array fns even more flexible, add lots of docs