added ReadyOrFuture object, refactoring