Reworked

Reworked main objects hierarchy to use more interfaces for loosened
conditions