finished version. v.1