some cleanup, a bit less boilerplaty