I like the idea of separating different versions into different platforms when behaviour changes. This is cleaner IMO as for example selecting the current version via SQL and then switching behaviour in the methods. Also this is easier to maintain and keeps clean code. Although I don't know if this would cause BC breaks...