use prototypes
resolve conflict