added trait support