add registration, password encoding, update user functionality