Re-written the basics. Partial Resolve of #1