Initial commit

code still needs a lot of cleanup + commenting