model version I, except productlist.go is umimplemented due to the confusing requirements