refactored render, added get/set for extensions, added tests