Added virtus as a dependecy
added virtus, going to break up the classes a bit for now
some refactorings, separation of concerns, added more functionality which also needs to be split up further