made target eigenvalue a shared pointer