Planning to make this a mixin, so will leave it here for now.