additional implementation