I'm really not a fan of double underscores to start method names, is there a particular reason why you've used them here?