Rough replica implemented, more design issues need to be taken care of