very close, but still wip [ci skip]