rewrite from scratch. move lanterns to separate mod