Add lots documentation, remove confusing/unnecessary interfaces