all necceessary tests implemented. from now on only tdd