major rewrite
Fix conflict