use constructor instead of convenience function