Full functionality implemented, still needs bugfixes