refactor
continued refactor