changed a lot, i guess its kinda MVC now