Added some Javadocs and implemented some interface methods