added click event, extract to mixin