Initial version.
Moved upstairs.
Moved upstairs.
Added declarations to make compilable.
Initial version