added external interface implementation