completed classes... everythig has to be refatored, tests especialy, but I'm a bit lazy now :)