some parts fixed, some parts unfinished