use one way to extend self