Add javadocs and some interfaces