adopted some mvc