Change implementation to specify type instead of derived_from

added validation for implementations that points to none existing nodes etc'