Jumpimg everytime i get a notification.
...Thinking that,maybe...Just maybe!
..It might be from you.

The only one i love
The only one i am waiting for.
...But you re just a coward.
..A ,, Pick me"girl.
..Who am I kiding,and why am I even trying..?
When....You hurt me,you just wine and cry
And wait for me,the one who s been hurt
To console  you..
..Or you don t respond and leave me alone.

..Yes,you re right, princess.
You don t know how ti show love.
..Often i m not even sure you have any..

..For you,and not just you!
I get myself beaten and yelled at
..Humiliated and spitted on
..Just for a change
..A FUCKING CHANGE
Of hangijg out.

..Tho..It s alright,honey.
..Cuz you can t see..Or you refuse.
..Or I need to point out at  how  many things i do for you..?
..I don t do them for you to see 
I m not in a race.
..I just fucking love you and want your best.

..I guess this case is only for me,right,angel?
..Couldn t even be bother to ask them after me waiting  for more than 3 months.
What can you do,sweetie..
..



...You re so different compared to anyone else
..so special..so beautiful!
And i ve always said that
..It was our  thing...Understanding eachother only in a way we could

..But..I guess someone born in a better family
Will never understand truly the less fortunate ones.
...Just fell pitty.

...Is that all you ve got for me?
Pitty for my ilnesses,that i  might day?
That my organs can be eaten alive by my body?
Pitty for my family and how they  all  hate me?
Pitty for being seen as a treat by the society..?
..Pitty for my atempt of suicidal with my own tears?!
..pitty for how alone and cold i am at all times?

I fucking guess so..
..But  you know what you have more pitty for?
.. Yourself.
Always after making a mistake ceying  and naming yourself
Labeling yourself.
Calling yourself stupid
...And not comfort the one you ve hurt but wait for their comfort.


..always.
..you always said you ll give me a voice
I ll be able to talk
To say what s bothering me
..Sadly they were just words,ey?

..Words..
..i wish i had those .
..the right to say anything i please
..A fucking dream,baby.

..Well ...I ll see you tommrow.
And i ll make you smile
And i ll smile for you
Even if you hurt me so much..
..

..It s alright,angel.
Just a matter of time untill my organs fail anyway.
I ll die anyway
So there s no rush^^

