If there is no reason for using a val here, then using def in the interface and val to implement it in the class seems cleaner to me. IntelliJ seems to warn about it even. See http://stackoverflow.com/questions/7846119/is-there-something-wrong-with-an-abstract-value-used-in-trait-in-scala