added type annotations