add more abstract object and format all the source code