added type signatures