this requires to be inside a function lol