basical functionality is done