reafactor, use mvp, not done yet