Added type annotations :P