swan framework