Some code is borrowed from projects I did earlier and some code is still not added yet, but does exists in my projects.