added interfaces, (split stuff into func)+(less redundant vars), proper OO/class seperation, no more extends