Pushed with minor changes for working correctly.