widgets moved to separate file with full tests