Initial import.
fixed merge conflicts