move invalid date functionality to a mixin
add selection mixin