[bugfix] component pattern