added trait functionality