added some extra functions and "todos"