add song saving code and an exception handling decorator