Refactored the self() method