more work towards supporting multiple backends