if i can make this faster it might be actually cool