DEV: Apply MVP pattern