refactor a little, not quite there yet