recording methods refactored