added an abstract javascript component