changed to MVP structure