better handling of self