Be explicit on the return value and `return 1`. It's surprising otherwise.

Also, direct manipulation of `$self`...