updated bodycomponent from interface to abstract class