added "extends" and "with"