Bleeding edge version 13.09.2014. Needs refactoring.