Refactoring and Optimisation

Signed-off-by: Filiberto Cota <filiberto.cota@gmail.com>