Added generic type constrains. Working on implicit objects