Just wondering here - since we have a separate 'cleartip()' method... Should 'settip()' call 'cleartip()' when settip() is called with the empty string? Might neaten things up a bit :)