Further API improvement
Restructuring and slimming
Unexported several names which should've been internal