first refacto

refactor