Best attempt to complete this.