feat: support extending classes