refact + component