Implemented almost all public interface methods