better hit testing