proof of concept. Do not us before HUGE refactor.