refactor
more refactor, new data, add print