Add mostly all functionality