Added more annotations

I implemented more of the definition from the docs. Actually using the optional params as you showed failed when compiling, but as it is now it passes...