framework done. please finish this.