work on backend, dirty state