0.3.0: Completetly rewritten code
0.3.0: Completetly rewritten code