finish signin refactor'