move to a private method