unifying class trait and interface