refactor parts