First commit, still sorting out some issues.