have to use trait