Initial Version, not yet tested.