update with modules and mixins for repeated methods