copied from colin353/mushuduck