Reorganized a lot of things, added text view component