implemented MagicalEntity and its sublclasses