This will be rewritten, i hate it.