a first approach. it is shit.