added a basic plugin and extension system