Cited work from stackoverflow.