done (except 1 bug + subs...)