partially complete assigment, a bit rough