overriding abstract fields (val)
override abstract type (trait)