In the future I might expand this to allow for there to be overloadable functions as part of an impl or such. Any improvements or suggestions are highly appreciated (With the one that bugs me the most being the fact that we need to specify the constraints in the where clause and that those constraints need to be in square brackets).