refactor hide functionality to Hideable concern