methods now give sensible error messages when passing incompatible objects as 'this'