cleaning up the client organizing it in a MVVM fashion