Updated according to requirements...

Now it's less good than it was :(
But these are the requirements.