some intermediate thi things x.x