use implicit val instead of implicit def