added MVP Pattern