a half baked idea, half implemented
refactor complete
merging