use static keywords instead of self