starting to migrate away from loops (shader ftw)