All methods implemented, unfortunately it's not working really well...