less restrictive trait bounds