[components] make component functions async