i'm running out of time so I'll split them into separate PRs.