changed paramter & arrayWidget to abstract class