This is not done yet but heres a start :)