final version for now, mostly works