rather than static here is self