Init is ugly, struct for all the init data should be made. Perhaps add constructors which take init data struct.