implement Model