Refactor using context bounds

Yaptim ama luzumundan fazla karmasik oldu sanki. Yarin bir inceleyelim de oyle alalim iceri.