Trying to abstract function application
Better abstraction of types, support for void kinda