Refacoted to use a more View based approach