code refactored.
added setup script and requirements file.