add upper bound method