big update, changed structure