Better module framework