back logic refined