Initial version. No testing done.