abstract & concrete