added more methods, classes, and helper methods