methods needs to have self