added device as first arg