slight refactor interface