uses constatnts instead of preprocessor
style rules