
            const s = new Signal();

            s.add(() => {});
            s.add(() => {});
            expect(s.handlers()).to.have.lengthOf(2);

            s.detachAll();
            expect(s.handlers()).to.have.lengthOf(0);
        });
    });

    describe('#filter', function ()
    {
        it('dispatches when it returns true', function ()
        {
            const sp0 = spy();
            const sp1 = spy();
            const s = new Signal();

            s.add(sp0);
            s.once(sp1);
            s.filter(() => true);
            expect(s.handlers()).to.have.lengthOf(2);

            s.dispatch();
            expect(sp0).to.have.been.calledOnce;
            expect(sp1).to.have.been.calledOnce;
            expect(s.handlers()).to.have.lengthOf(1);

            s.dispatch();
            expect(sp0).to.have.been.calledTwice;
            expect(sp1).to.have.been.calledOnce;
            expect(s.handlers()).to.have.lengthOf(1);
        });

        it('does not dispatch when it returns true', function ()
        {
            const sp0 = spy();
            const sp1 = spy();
            const s = new Signal();

            s.add(sp0);
            s.once(sp1);
            s.filter(() => false);
            expect(s.handlers()).to.have.lengthOf(2);

            s.dispatch();
            expect(sp0).to.not.have.been.called;
            expect(sp1).to.not.have.been.called;
            expect(s.handlers()).to.have.lengthOf(2);

            s.dispatch();
            expect(sp0).to.not.have.been.called;
            expect(sp1).to.not.have.been.called;
            expect(s.handlers()).to.have.lengthOf(2);
        });

        it('gets the dispatch parameters', function ()
        {
            const sp0 = spy();
            const sp1 = spy();
            const s = new Signal<(b: boolean) => void>();

            s.add(sp0);
            s.once(sp1);
            s.filter((b) => b);
            expect(s.handlers()).to.have.lengthOf(2);

            s.dispatch(false);
            expect(sp0).to.not.have.been.called;
            expect(sp1).to.not.have.been.called;
            expect(s.handlers()).to.have.lengthOf(2);

            s.dispatch(true);
            expect(sp0).to.have.been.calledOnce;
            expect(sp1).to.have.been.calledOnce;
            expect(s.handlers()).to.have.lengthOf(1);

            s.dispatch(true);
            expect(sp0).to.have.been.calledTwice;
            expect(sp1).to.have.been.calledOnce;
            expect(s.handlers()).to.have.lengthOf(1);
        });
    });

    describe('#proxy', function ()
    {
        it('dispatches when proxied signal dispatches', function ()
        {
            const sp0 = spy();
            const sp1 = spy();

            const s0 = new Signal();
            const s1 = new Signal();

            s1.add(sp0);
            s1.once(sp1);
            s1.proxy(s0);

            s0.dispatch();
            expect(sp0).to.have.been.calledOnce;
            expect(sp1).to.have.been.calledOnce;

            s0.dispatch();
            expect(sp0).to.have.been.calledTwice;
            expect(sp1).to.have.been.calledOnce;
        });
    });
});
Mexico Music is a family owned and operated Music Store established in 1992. We offer great deals on musical instruments, accessories, rental and repair. Our music lessons are available with certified teachers that are also experienced and active performers. We have a yearly recital that helps students to learn to perform and many also play for churches, school, bands and entertain at family gatherings.
We care deeply about our community and customersâ€™ success and will share our knowledge, passion and joy for music with those who want to learn music and about musical products. We are very thankful for our customers and students whose support, encouragement and smiles have kept us in business since 1992.
There are no reviews for Mexico Music. Be the first to review this provider.
Want a fast response from Mexico Music? Noodle them!When Bill Twyford and his son, Will, took on what they quickly began referring to as the “Water House” in the Colorado mountains, they knew the project would be tough but rewarding. “It was a six-month project and we put about $75,000 into it, but we completely changed the look of the home,” said Bill. From the start, the father-son team knew that the biggest selling feature for the property would not be the size (which was about 1,200 square feet before the renovation), but rather that it was located on the banks of a cheerfully flowing, year-round mountain stream.
“For mountain properties, that means it was a waterfront property,” explained Bill. Most people probably think of lakes or oceans when they hear the description “waterfront,” but the term also includes what Trout Unlimited refers to as the “riparian advantage” of flowing rivers and streams. Water House’s stream, like many in the area, offers pleasant vistas and plentiful fishing opportunities right in the backyard. “That stream just rambles through the back of the property, and it’s just beautiful to see and hear,” said Bill. Although the location was extremely desirable, the property, at time of purchase, was not exactly a luxury habitation. “We knew we were going to have to add some real quality to that property to get a high-dollar price for it,” said Bill. Not only was the home quite small; it also had only one bathroom, located downstairs and three small bedrooms. “It was also brick, which is unusual in the mountains,” said Bill, noting that this material may be less attractive to buyers accustomed to seeing wood siding or log homes.
To address the brick issue, the Twyfords used rollers to apply a thinned-down, white latex paint to the brick exterior of the home, then removed excess paint from the bricks with a sponge. “It looked as if it had been painted, but the paint had worn away a little over time, kind of a Thomas Kinkade look,” Bill said. They also replaced the shingle old roof with a green metal one. Metal roofs tend to be more expensive than shingles, but they add benefits and value including longevity, energy efficiency, and, in some cases, reduced insurance premiums.
Homeowners buying in the mountains pay a premium for this type of proximity to year-round flowing water and the lifestyle and benefits associated with it.
Before (above) and after (right): It’s amazing what a little paint can do! Of course, the Twyfords added more than just latex paint to this property to effect this transformation.
Bill and Will made one more major change to the exterior of the cabin: They added a 700-square-foot deck. “The view is just beautiful, and we knew we had to add that deck so that the future owners could take full advantage of it,” Bill said. Previously, the property had a small deck off to the side. 
Inside, the changes were no less substantial. “When we bought the house, the downstairs was one bedroom, one bathroom, a kitchen, and a living room. When you walked in, the place took you right back to the year it was built, 1961,” said Bill. Everything outdated, from the red shag rug in the living room to the avocado appliances (upper right) to the startling rock accent wall, had to be replaced.
“We put in hardwood floors, covered up the rock, and built out the fireplace mantle around the fireplace,” Bill said. They also remodeled the kitchen, installing a counter-depth refrigerator, removing the café doors to improve the flow of the property, and installing a recessed area for a washer and dryer. “We also redid the first-floor bedroom and bathroom, but we saved the major changes for the upstairs bedroom,” he added.
The Twyfords replaced the large window in the original room with double doors and put in three-quarter-inch hardwoods with a cherry look. Pictured: living area after.
Living area before renovation.
When they removed the sheetrock during the early stages of the rehab, they noticed that the house had heavy, old beams running across the ceiling. “The house looks like an A-frame house, but it’s actually not,” said Bill. “There are these big bars that run across between the two sides of the roof, and they were beautiful. We put in a