almost finish code, test need to do