There might be few micro optimisations left at some points, but for now i don't care about them, this time is decent