reorganize for better understanding