moved duplicate code to separate functions