added untyped implementation