Initial commit. Many functions already created. No tests yet.