added top level type signature