alternative clean api
merge conflicts ayy lmao