do not depend on jquery — there are a lot of shims for it