finish all basic functionality