some additional refactoring, oh...