Contracts methods are defined using the pattern "public function name()". Is the function keyword necessary? To me the function keyword seems redundant as the lexer should be able to identity that its a function by the "name()" pattern. This would reduce typing by eliminating this noise. Unless there are different function types, it would seem that this would reduce the extra typing.