refactored to interactors