done basic implementations of all things mentioned in TODO