refactor a little so we can remove some methods