Quoting a respected member of the User Experience community I can recommend some things to further enhance user experience.
Note: I think the form already is very clear and probably user friendly.
resource article link
Not splitting first and last name is tricky on a back-end level. The application might want to address the user just by it's first or last name. Having those separated in the database makes this easy. But the name as a single entity, how do you know what the first name is and what the last? Different countries have different ways of displaying names. If you really need to separate the two entities you should do so with two input fields. Or perhaps you know your audience to be primarily US or UK based. Majority of your audience will have just a single first name and a single last name, making it easy to split the name into first name and last name.
Forgetting to accept the terms of service is a common mistake users make. Since accepting the terms is mandatory reducing it to a single button reduces the amount of clicks and the frustration of having forgotten to check the checkbox.