save this for later

(though, it can be defined in any other lib, as
no magic casts are needed)
clean up
magic-less version

(removing next, as it can appear in every library)
removed everything that I added on this branch, basically