needs revision and refining