preliminary working project. still needs polishing/GUI/documentation