0
I Use This!
Very Low Activity

Commits : Listings

Analyzed about 8 hours ago. based on code collected 1 day ago.
Nov 05, 2025 — Nov 05, 2026
Commit Message Contributor Files Modified Lines Added Lines Removed Code Location Date
869. (THEORY and FEATURE) Drone Obstacle Avoidance by 3D Navigation on Airspace defined by Road Geometry - related to 582, 867 and all sections on Motion Planning, GIS Analytics, Logical clocks, Large Scale Visuals Recognition - 2 October 2020 More... about 6 years ago
--------------------------------------------------------------------------------------------------------------------------------------------- 867. (THEORY and FEATURE) OpenCV Image Contours and Segmentation for Drone Obstacle Avoidance and Motion Planning - related to 866 and all sections on Large Scale Visual Recognition, GIS analytics and Drone Navigation - 12 September 2020 --------------------------------------------------------------------------------------------------------------------------------------------- 1.This code change implements a new function image_segmentation_contours() in ImageGraph_Keras_Theano.py which is exactly similar to contouring code in handwriting_recognition() (DeepLearning_ConvolutionNetwork_BackPropagation.py) for topological handwriting recognition (Product Homotopy) but without distance computation for two imagefiles and finds contour interpolation polynomials for single image. 2.image_segmentation_contours() has been implemented as a subroutine which is invoked by image_segmentation() and could be used by any other NeuronRain computer vision and Large Scale Visual Recognition analytics code. 3.image_segmentation() earlier had only a computational geometric segmentation of an image for finding component segments and their centroids (GRANA), Delaunay Triangulation and Facegraphs. 4.A-Star motion planning implementation in NeuronRain (Section 866 of NeuronRain Theory Drafts) assumes a graph adjacency matrix and heuristic array signifying estimated cost of obstacle per vertex. 5.Contour detection for GIS imagery is a tool for obstacle avoidance in drone navigation and motion planning. For example, extracting contour points and its interpolated polynomials from a Road network GIS imagery of a terrain is useful for drawing a Contour graph vertices of which are contour points connected by contour polynomials. Adjacency matrix of such a contour graph could be used in A-Star implementation for Drone navigation. 6. It is worth observing that 3D-navigation of drones on the edges of road (rail or other transport) network graphs (assuming sufficient vehicle clearance heights greater than grade separators and interchanges for drone altitude) is always obstacle-free because of zero collision (on the contrary driverless vehicles on 2D road networks have non-trivial obstacle avoidance challenge - an optional obstacle avoidance could be to do a VerticalTakeOffLanding (VTOL) for circumventing every obstacle adding a third dimension to surface transport vehicle). 7. An example Road network map from Google Maps has been contour-recognized and following logs and image files illustrate the contour polynomials inferred from road network - by both image_segmentation() and image_segmentation_contours() : testlogs/ImageGraph_Keras_Theano.log.ContourSegmentation.26September2020 testlogs/RemoteSensingGIS/Google_Maps_SouthernIndia_RoadMap-000.jpg testlogs/RemoteSensingGIS/Google_Maps_SouthernIndia_RoadMap-000_contours_segmented.png testlogs/RemoteSensingGIS/Google_Maps_SouthernIndia_RoadMap-000_segmented.jpg testlogs/RemoteSensingGIS/Google_Maps_SouthernIndia_RoadMap.pdf testlogs/VoronoiFaceGraph_GoogleMaps_RoadMap_1_26September2020.png More... about 6 years ago
--------------------------------------------------------------------------------------------------------------------------------------------- 867. (THEORY and FEATURE) OpenCV Image Contours and Segmentation for Drone Obstacle Avoidance and Motion Planning - related to 866 and all sections on Large Scale Visual Recognition, GIS analytics and Drone Navigation - 12 September 2020 --------------------------------------------------------------------------------------------------------------------------------------------- 1.This code change implements a new function image_segmentation_contours() in ImageGraph_Keras_Theano.py which is exactly similar to contouring code in handwriting_recognition() (DeepLearning_ConvolutionNetwork_BackPropagation.py) for topological handwriting recognition (Product Homotopy) but without distance computation for two imagefiles and finds contour interpolation polynomials for single image. 2.image_segmentation_contours() has been implemented as a subroutine which is invoked by image_segmentation() and could be used by any other NeuronRain computer vision and Large Scale Visual Recognition analytics code. 3.image_segmentation() earlier had only a computational geometric segmentation of an image for finding component segments and their centroids (GRANA), Delaunay Triangulation and Facegraphs. 4.A-Star motion planning implementation in NeuronRain (Section 866 of NeuronRain Theory Drafts) assumes a graph adjacency matrix and heuristic array signifying estimated cost of obstacle per vertex. 5.Contour detection for GIS imagery is a tool for obstacle avoidance in drone navigation and motion planning. For example, extracting contour points and its interpolated polynomials from a Road network GIS imagery of a terrain is useful for drawing a Contour graph vertices of which are contour points connected by contour polynomials. Adjacency matrix of such a contour graph could be used in A-Star implementation for Drone navigation. 6. It is worth observing that 3D-navigation of drones on the edges of road (rail or other transport) network graphs (assuming sufficient vehicle clearance heights greater than grade separators and interchanges for drone altitude) is always obstacle-free because of zero collision (on the contrary driverless vehicles on 2D road networks have non-trivial obstacle avoidance challenge - an optional obstacle avoidance could be to do a VerticalTakeOffLanding (VTOL) for circumventing every obstacle adding a third dimension to surface transport vehicle). 7. An example Road network map from Google Maps has been contour-recognized and following logs and image files illustrate the contour polynomials inferred from road network - by both image_segmentation() and image_segmentation_contours() : testlogs/ImageGraph_Keras_Theano.log.ContourSegmentation.26September2020 testlogs/RemoteSensingGIS/Google_Maps_SouthernIndia_RoadMap-000.jpg testlogs/RemoteSensingGIS/Google_Maps_SouthernIndia_RoadMap-000_contours_segmented.png testlogs/RemoteSensingGIS/Google_Maps_SouthernIndia_RoadMap-000_segmented.jpg testlogs/RemoteSensingGIS/Google_Maps_SouthernIndia_RoadMap.pdf testlogs/VoronoiFaceGraph_GoogleMaps_RoadMap_1_26September2020.png More... about 6 years ago
Updated Requirements.txt More... about 6 years ago
865. (THEORY and FEATURE) NeuronRainApps - NeuronRain usecases - Drone Autonomous Online Shopping Delivery Implementation - MAVSDK + JMAVSIM simulation for PX4 - 1 September 2020 - related to 637,675,713 More... about 6 years ago
--------------------------------------------------------------------------------------------------------------------------------------------- 865. (THEORY and FEATURE) NeuronRainApps - NeuronRain usecases - Drone Autonomous Online Shopping Delivery Implementation - MAVSDK + JMAVSIM simulation for PX4 - 1 September 2020 - related to 637,675,713 --------------------------------------------------------------------------------------------------------------------------------------------- 1. OnlineShoppingDelivery Python 3.7.5 implementation in NeuronRainApps/Drones has been changed to import MAVSDK Mission Plan classes and dronecode_sdk imports have been commented (Example: https://github.com/mavlink/MAVSDK-Python/blob/master/examples/mission.py). 2. Following GIS analytics variables are read by socket streaming datasource in Streaming Abstract Generator from a webserver listening on port 64001 (netcat -l 64001) and are parsed as key-value pairs (these variables have also been committed to python-src/NeuronRainApps/Drones/OnlineShoppingDelivery.GISvars.txt) delimited by end marker: longitude=47.397825620791895 latitude=8.5450092830163281 relative_altitude_m=1 speed_m_s=1 is_fly_through = True gimbal_pitch_deg = nan gimbal_yaw_deg = nan camera_action = none loiter_time_s = nan camera_photo_interval_s = nan end 3. In this commit only first four variables for navigation are being read from socket stream while rest are assumed to have default values. 4. Code changes for MissionPlan specific to MAVSDK mission-upload, start-mission and arm-takeoff-take_photo have been committed. To simulate a hamiltonian cycle, drone.mission.set_return_to_launch_after_mission(True) has been invoked. 5. awaits for mission progress and observe_is_in_air have been commented. 6. GIS navigation analytics variables read over socket stream are filtered for convex-hull boundaries and mission items are appended accordingly to Mission plan. Every mission item is a delivery point. 7. JMAVSIM and PX4 SITL Logs, Netcat logs for streaming analytics variables and MP4 video of the simulated flight of a drone have been committed as hereunder: python-src/NeuronRainApps/Drones/testlogs/OnlineShoppingDelivery_Drone_JMAVSIM_Flight_Simulation.log1.1September2020 python-src/NeuronRainApps/Drones/testlogs/OnlineShoppingDelivery_Drone_JMAVSIM_Flight_Simulation.log2.1September2020 python-src/NeuronRainApps/Drones/testlogs/OnlineShoppingDelivery_PX4_Drone_JMAVSIM_Flight_Simulation2.mp4 8. Video python-src/NeuronRainApps/Drones/testlogs/OnlineShoppingDelivery_PX4_Drone_JMAVSIM_Flight_Simulation2.mp4 shows the imaginary multirotor drone in JMAVSIM PX4 SITL making a vertical takeoff, drawing an aerial cycle based on longitude-latitude-altitude of mission item delivery points before comeback to origin by vertical landing. More... about 6 years ago
Updated BestPractices.txt More... over 6 years ago
815. (THEORY and FEATURE) Waveform Distance of Audios, Acoustic Distance of Strings, Name Similarity, Music Clustering - Python 3.7.5 - 27 March 2020,30 April 2020 - related to 783 and all sections on People Analytics, Compressed Sensing, Intrinsic Merit, Syllable embedding of strings, Hyphenation and Music Pattern Mining More... over 6 years ago
819. (THEORY and FEATURE) Chaotic Pseudorandom Generator - 1D Binary Cellular Automaton - Multicolored Space Filling - implementation - 16 April 2020, 17 April 2020 - related to 135, 752, 818 and all sections on Monochromatic and Multichromatic Space filling, Chaos, Computational Geometric Planar Point Location Search, Pseudorandomness, Linear Programs/CSP, LSH/Separate Chaining, Circle Packing in NeuronRain Unified Theory Drafts More... over 6 years ago
820. (THEORY and FEATURE) People Analytics - LinkedIn Dataset Analysis - Tenure statistics - 17 April 2020 - related to 817 More... over 6 years ago
--------------------------------------------------------------------------------------------------------------------------------------------- 820. (THEORY and FEATURE) People Analytics - LinkedIn Dataset Analysis - Tenure statistics - 17 April 2020 - related to 817 --------------------------------------------------------------------------------------------------------------------------------------------- 1.LinkedIn profile parser function parse_profile() in SocialNetworkAnalysis_PeopleAnalytics.py has been updated to compute following tenure statistics for each linkedin text profile for being compliant to Kaggle linkedin CSV dataset (https://www.kaggle.com/killbot/linkedin) which has these fields. Ethnic and physical feature fields have been excluded: self.avg_n_pos_per_prev_tenure = 1 self.avg_pos_len = float(sum(self.timedeltas))/float(len(self.timedeltas)) self.avg_prev_tenure_len = float(sum(self.timedeltas[:-1]))/float(len(self.timedeltas[:-1])) self.n_prev_tenures = len(self.timedeltas)-1 self.tenure_len = self.timedeltas[-1:] self.n_followers = self.parse_connections(profile_text) 2.Previous statistics compute average number of positions per previous tenure (which has been assumed to be 1), average length of positions(computed from tenure timedeltas histogram), average previous tenure length (computed by neglecting present tenure), number of previous tenures, tenure length (only present tenure), number of followers (connections) 3.Each of these tenure variables could be either analyzed as moving average timeseries (kind of martingale because it captures past history) or observations read from JSON in Weighted Automata - Chaotic Hidden Markov Model of Tenures (SocialNetworkAnalysis_PeopleAnalytics_ChaoticHMM.py) - JSON file based on these variables could be dynamically written per linkedin profile and Viterbi is computed. 4.Logs for example linkedin profile of author (https://www.linkedin.com/comm/in/srinivasan-kannan-608a671) are at testlogs/SocialNetworkAnalysis_PeopleAnalytics.log.17April2020 5.Video resumes could also be analytics datasources apart from usual social network data in PDF and TXT because of their greater authenticity (Alumni,Quora,Facebook,Twitter,Google,Repositories profile montage Video resumes of author in python-src/image_pattern_mining - ExampleVideo_1.mp4, ExampleVideo_4.mp4, ExampleVideo_2.mp4, ExampleVideo_Facebook_GRAFIT_29April2019.mp4, ExampleVideo_3.mp4, ExampleVideo_GoogleScholar_Search.mp4) . More... over 6 years ago
819. (THEORY and FEATURE) Chaotic Pseudorandom Generator - 1D Binary Cellular Automaton - Multicolored Space Filling - implementation - 16 April 2020 - related to 135, 752, 818 and all sections on Monochromatic and Multichromatic Space filling, Chaos, Computational Geometric Planar Point Location Search, Pseudorandomness, Linear Programs/CSP, LSH/Separate Chaining, Circle Packing in NeuronRain Unified Theory Drafts More... over 6 years ago
--------------------------------------------------------------------------------------------------------------------------------------------- 819. (THEORY and FEATURE) Chaotic Pseudorandom Generator - 1D Binary Cellular Automaton - Multicolored Space Filling - implementation - 16 April 2020 - related to 135, 752, 818 and all sections on Monochromatic and Multichromatic Space filling, Chaos, Computational Geometric Planar Point Location Search, Pseudorandomness, Linear Programs/CSP, LSH/Separate Chaining, Circle Packing in NeuronRain Unified Theory Drafts --------------------------------------------------------------------------------------------------------------------------------------------- 1.New function grow_cellular_automaton() has been defined in ChaosAttractor.py which grows an one dimensional binary cellular automaton. 2.ChaosPRG() function accepts four algorithm options - "Logistic","Lehmer-Palmore","Mandelbrot" and "Cellular Automaton". 3.grow_cellular_automaton() function accepts a binary string of 0s and 1s as initialization vector and a random Lambda fraction. 4.Following simple growth rule has been implemented: 4.1 Automaton is grown by scanning the two binary digit neighbours of a bit location for four possibilities - 00,10,01,11 4.2 For each possible neighbourhood, bit location in next generation is updated depending on random value of lambda to 0 or 1 4.3 This simulates Conway's Birth-Survival-Death Game of Life Cellular Automaton approximately and 2-dimensional tableau of binary strings grown in parallel thus captures space filling complexity of natural processes including random fluid flow, rainfall, randomly strewn solids, ... 4.4 Cellular Automaton Space Filling Algorithm in 135 , a refinement of LP version in https://sites.google.com/site/kuja27/Analysis%20of%20a%20Randomized%20Space%20Filling%20Algorithm%20and%20its%20Linear%20Program%20Formulation.pdf?attredirects=0 describes a Parallel PRG based 2-dimensional Cellular Automaton which monochromatically fills a 2-D plane in parallel 4.5 Each generation row of 1D binary Cellular Automaton is a Pseudorandom bit sequence 5.States (colors) of the squares in this implementation are binary - 1 or 0 which could be generalized to arbitrary coloring alphabet by defining/reading new growth rules within grow_cellular_automaton() making it a multichromatic space filling. 6.R correlations of the Cellular Automaton PRG to a stock quote dataset are printed in testlogs/ChaosAttractor.CellularAutomaton.log.16April2020. More... over 6 years ago
Theory - Cellular Automaton Space Filling Algorithm, Growth Rules, Lambda and Chaos from Order More... over 6 years ago
Cellular Automata, Chaos, Merkle-Damgard Cryptohash More... over 6 years ago
Updated NeuronRain Unified Theory Drafts - GRAFIT course material: More... over 6 years ago
--------------------------------------------------------------------------------------------------------------------------------------------- 818. (THEORY and FEATURE) Chaotic Pseudorandom Generator (PRG) - Mandelbrot set, Undecidability of Learning Chaotic Bigdata - 13 April 2020 - related to 459,629,740,743,744 and all sections on Pseudorandomness, EVMs, Hardness amplification, Computational learning theory, Chaos --------------------------------------------------------------------------------------------------------------------------------------------- 1.ChaosAttractor.py has been changed to create Mandelbrot set sequence by recursively iterating complex logistic map in a separate clause and function arg - "Mandelbrot" - to ChaosPRG(): Z <- Z^2 + C (for seed C) 2.From 629.6 earlier, Mandelbrot set is undecidable due to differing Hausdorff dimensions(1 and 2) which is crucial because Mandelbrot sets are universally found amongst most natural processes (biological, economic-markets, weather, geographic massive datasets) - Undecidability implies there is no halting Turing machine which recognizes language of Bigdata Mandelbrot sets dealing a lethal blow to BigData learnability. 3.Pseudorandom Mandelbrot sequence generated by previous map Z: Z^2 + C thus is undecidable and a distinguisher Turing machine A (Pr[A(x)=1]-Pr[A(ChaosPRG(seed))=1] >> epsilon where x is a perfect random string in {0,1}^n) which recognizes such a chaotic sequence does not exist too. 4.Example Mandelbrot sequences can be found in testlogs/ChaosAttractor.Mandelbrot.log.13April2020 5.Psuedorandom paper ballot shuffle simulation of Drone Electronic Voting Machine ballots by Chaotic Mandelbrot PRG thus nullifies distinguishability - but yet aforementioned Ramsey theoretic anomaly - "inevitable emergence of order from chaos" - arises: monochromatic arithmetic progressions are still possible in chaotically shuffled multichromatic sequence of votes(if votes are explicitly colored by candidate indices). More... over 6 years ago
629. (THEORY) Complement Diophantine Equations over Complex Numbers and Algebraic/Arithmetic Circuits for them, Blum-Shub-Smale Turing Machines, Thue and Siegel Equations, Elliptic Curves, Mordell Conjecture and Theorem, ABC Conjecture, Riemann Zeta Function,Chaos - 9 January 2019,12 April 2020 - related to 24,490,617 More... over 6 years ago
619. (THEORY and FEATURE) Software Analytics - Cyclomatic Complexity - FTrace call graphs - 28 November 2018,12 April 2020 - related to 581,770 - Epidemic(SIS) and Game theoretic model of cybercrimes More... over 6 years ago
Social Network Random Graph Models - Forest Fire, Citation Graphs More... over 6 years ago
817. (THEORY and FEATURE) People Analytics - Talent Analytics - Chaotic Hidden Markov Model of Parallel Tenures/Attritions and JSON persistence - Weighted Automata model of Tenures - Tensor Decomposition of EventNet Logical Time - related to 661,701,812 - 8 April 2020 More... over 6 years ago
--------------------------------------------------------------------------------------------------------------------------------------------- 817. (THEORY and FEATURE) People Analytics - Talent Analytics - Chaotic Hidden Markov Model of Parallel Tenures/Attritions and JSON persistence - Weighted Automata model of Tenures - Tensor Decomposition of EventNet Logical Time - related to 661,701,812 - 8 April 2020 --------------------------------------------------------------------------------------------------------------------------------------------- 1.SocialNetworkAnalysis_PeopleAnalytics_ChaoticHMM.py has been updated to remove hardcoded state transition and emission probabilities (from linkedin profile of author) and to read them from a JSON persistence SocialNetworkAnalysis_PeopleAnalytics_ChaoticHMM.json by json.loads() 2.SocialNetworkAnalysis_PeopleAnalytics_ChaoticHMM.json has been made comprehensive to merge and serialize parallel academic and work tenures - there are multiple parallel academic and work tenures in the example profile making it increasingly difficult to fathom tenure durations because time is parallelized amongst multiple tenures. Parallel tenures are metrics for ability of a profile to multitask. Tensor decomposition of EventNet Causality Logical clock is worth mentioning here which componentizes time - each linear component of time tensor could correspond to a parallel tenure empirically. 3.Parallel tenures are presently simulated by probability distributions - earlier sequential viterbi has been recomputed for parallel tenures which has multiple non-zero probability states per chronological layer of viterbi trellis and largest probability per layer points to the most prominent state at a time point. Optimal choice of probabilities in JSON are reflected in viterbi and following is an example for parallel tenure traversal from logs testlogs/SocialNetworkAnalysis_PeopleAnalytics_ChaoticHMM.log.8April2020 simulating parallelism: More... over 6 years ago
Theory - Quantum Chaos, Zeta Functions, Primes, Random matrices More... over 6 years ago
Theory - Chaotic Randomness - Epidemic modelling by Random graphs - ER-SIR More... over 6 years ago
816. (THEORY and FEATURE) People Analytics - Human Resource Analytics - Chaotic Hidden Markov Model of Tenures/Attrition - implementation - related to 812 - 31 March 2020 More... over 6 years ago
--------------------------------------------------------------------------------------------------------------------------------------------- 816. (THEORY and FEATURE) People Analytics - Human Resource Analytics - Chaotic Hidden Markov Model of Tenures/Attrition - implementation - related to 812 - 31 March 2020 --------------------------------------------------------------------------------------------------------------------------------------------- 1.Chaotic Hidden Markov Model of Tenures/Attritions based on Verhulst actuarial logistic has been implemented in a new source file SocialNetworkAnalysis_PeopleAnalytics_ChaoticHMM.py (Python 3.7.5) and SocialNetworkAnalysis_PeopleAnalytics_ChaoticHMM.py.2.7 (Python 2.7) 2.Similar to other Hidden Markov Models for CRF and TextCompression, this implementation is a Python class accepting states(institutions and organizations),observations(including but not limited to domain-designations-remunerations-cities),emission probabilities(probability of an observation in a state),state transition probabilities(probability of switchovers between orgs) and Lambda (constant for Verhulst Logistic) 3.chaotic_HMM_viterbi() function computes the HMM Viterbi algorithm as usual but with a difference in following line of code: (probability, state) = max((Viterbi[x-1][t]*self.Lambda*self.transition_probabilities[t][y]*(1-self.transition_probabilities[t][y])*self.emission_probabilities[y][self.observations[x]], t) for t in self.states) which computes the argmax of transition to a state and observation in transitioned state by Verhulst logistic format Lambda*x*(1-x) 4.Probabilities dictionaries have been hardcoded presently in __main__ for invoking Chaotic HMM Viterbi (Lambda=3.7). 5.Example profile of author (overall history of 25 years including academics and work) has been mapped to state transition and observation probabilities (in chronological order - ["Graduation", "AssociateSoftwareEngineer", "MemberTechStaff", "Founder-Architect", "SystemAnalyst", "Specialist", "PostGraduation-ResearchScholar", "Consultant-Architect", "Consultant", "Architect"]) and Viterbi computed is as below which accurately captures the career switches. Still this model considers parallel Tenures as sequential - FOSS initiative of author (Krishna iResearch) from 2003-present has duration of 17 years thus far. Non-major (below 18 years age) graduation in Hindi and schooling have been excluded which increase number of states and observations to 12 from 10 and history to 38 years: ============================ Chaotic HMM Viterbi computation ============================ [{'BaaN-SSAGlobal': 0.0, ... 'PSGTech': 1.0, ... 'webMethods-SoftwareAG': 0.0}, {'BaaN-SSAGlobal': 0.3330000000000001, ... 'webMethods-SoftwareAG': 0.0}, {'BaaN-SSAGlobal': 0.0, ... 'SunMicrosystems-Oracle': 0.11088900000000004, ... 'webMethods-SoftwareAG': 0.0}, {'BaaN-SSAGlobal': 0.0, ... 'Krishna-iResearch': 0.036926037000000016, ... 'webMethods-SoftwareAG': 0.0}, {'BaaN-SSAGlobal': 0.0, ... 'Verizon': 0.012296370321000007, ... 'webMethods-SoftwareAG': 0.0}, {'BaaN-SSAGlobal': 0.0, ... 'webMethods-SoftwareAG': 0.004094691316893003}, ... {'BaaN-SSAGlobal': 0.0, ... 'CMI-IIT-IMSc': 0.0013635322085253701, ... 'webMethods-SoftwareAG': 0.0}, {'BaaN-SSAGlobal': 0.0, ... 'GlobalAnalytics': 0.0004540562254389483, ... 'webMethods-SoftwareAG': 0.0}, {'BaaN-SSAGlobal': 0.0, ... 'Clockwork-PiQube': 0.0001512007230711698, ... 'webMethods-SoftwareAG': 0.0}, {'BaaN-SSAGlobal': 0.0, ... 'CloudEnablers': 5.034984078269955e-05, ... 'webMethods-SoftwareAG': 0.0}] More... over 6 years ago
k-Core degeneracy of Graphs - References More... over 6 years ago
Intrinsic Fitness model of GDP - References More... over 6 years ago
Theory - Money Trail Graph, Expander Graph Random Walks, Pseudorandom generators, Dense subgraphs More... over 6 years ago
Theory - Multi Agent Graph Coloring, GIS and Urban Sprawl analytics, MARA, Expander Graphs, Voronoi Diagrams More... over 6 years ago