Written by Bruno Moura [email protected], Licensed under the Apache License, Version 2.0.