reorganizing code and add forgot/reset password
use email-templates and enhance user password process reset