Revamp

Started from scratch will merge to master