self defining