latest update, almost finished