DRY up code, props @tamouse