refactoring following system and add change password