implemented plain self shadow