trait functions