osa testeistä tehty ja logiikkaa hieman laajennettu