ignore public because it's just used for pow