revamp implementation