use Runnable instead of Transaction
task refactor
update dao