Refactoring and avoid boilerplate code

@viavansi/movilidad 
Not final, not a singleton.