making more progress, haven't complete or tested it