module framework