Re-organized files by their parts
Separate browsing into a factory
Rewrote new datatypes and add base factory
Transfer commit