refactor (in process)