first pass at it. going to work on speed improvements (concurrency) next. also will add a few more features given the data available.