add link.go concept spike and start generalizing to db.Model