fixed up #57 (apart from movement) and improved "efficiency" of explode()