added recorder.
refactoring!