cleaned up to be fixed and turn to rubygem for better accessibility and setup