Added several methods and classes, needs more work to get it to work