working unfinished version added