lots of improvements, rewrote the search feature