refactor and print methods for visualizing this crazy