adds full basic functionality