Switching many things into pointers
Replacing Link struct with a set of custom types